Chinaunix首页 | 论坛 | 博客

  • 博客访问: 34114
  • 博文数量: 15
  • 博客积分: 605
  • 博客等级: 中士
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-25 21:01
文章分类

全部博文(15)

文章存档

2011年(1)

2010年(14)

我的朋友

分类: LINUX

2010-03-05 19:19:55

在 Ubuntu 上搭建 Subversion 服务器

Michael 一口气写了 4 篇文章来介绍怎样建立 Subversion 服务器,深入浅出,很适合新手参照。我这篇文章盗用了他的思路,简单说明一下怎样在 Ubuntu 上搭建 Subversion 服务器。是 一款非常好的开源版本控制系统,目前最新版本 1.4.4,新增版本库镜像工具 svnsync 和对 working copy 性能的改进,另外新版也开始支持 BerkeleyDB 4.4。在介绍前必须先搞清楚两个概念,一个是 repository (版本库,以下简称 repo), 一个是 working copy (工作拷贝,以下简称 wc),前者是项目所在的地方,后者是你做修改的地方。如果你对版本控制这个概念不太了解的话,Michael 简单解释了一下。 比如我有一个项目,有几百个文件,包括项目的相关文档,图表,和一些视频音频文件,它们都被放在电脑的一个文件夹内。随着项目的发展,文件夹内的会增加新 的文档图表等文件,而老的文件也会被修改,同时也许会有一些文件会被删除。在版本控制系统下,每一次对该项目文件夹下的改动,都会被记录,如果哪个文件被 删错了,或是想把文档恢复到以前的版本,可以轻而易举的达到。更了不起的是,如果该项目被一个团队来执行,该团队的每一个成员都可以对项目内的文件进行管 理和同步,这样就可以保持大家永远 on the same page。举例说明,只需 4 步在 Ubuntu 上搭建 Subversion 服务器。

一、搭建 Subversion 服务器

1、首先需要安装 subversion 这个软件:sudo apt-get install subversion
2、在 /home/nicky 下建立一个 repo,名称为 testproject:
svnadmin create /home/nicky/testproject
3、然后把 /fun/theme 目录下的内容导入到这个 repo 中:svn import -m "" /fun/theme file:///home/nicky/testproject
4、最后给这个 repo 建立一个 svn 自带的 svnserve:
svnserve -d -r /home/nicky/testprojec另外:如果需要设定用户的验证和相应的权限,请看这里

二、使用 Subversion


1、你可以使用下面的命令来获得一个 wc,如把它取名为 projecout。
svn checkout svn://127.0.0.1/ projecout或者简写为:svn co svn://127.0.0.1/ projecout
2、如果需要将修改从 wc 中发送到 repo。先到 wc 所在目录,然后使用下面的命令将修改发送到 repo:svn commit -m "note"

三、常用命令:
取出指定版本,如取出版本 2:
svn checkout --revision 2 svn://....

显示提交日志信息:
svn log
显示库中的最新信息:
svn log --revision
HEAD
更多命令参考


Ubuntu SVN服务器安装



好久没有玩linux了,今天在Ubuntu上装了一个Subversion服务器。由于上次安装Subversion已经是好几年前的事情了,有点手生了。不过好到Ubuntu这个东东蛮方便的。
1、安装Subversion

  1. sudo apt-get install subversion

2、建立存储仓库

  1. sudo mkdir /var/svnroot
  2. cd /var/svnroot

生成项目

  1. svnadmin create projectname

添加密码验证:

  1. sudo nano /var/svnroot/inlocals/conf/svnserve.conf

去掉password-db = passwd 前面的#号注释。
修改passwd文件:

  1. sudo nano /var/svnroot/inlocals/conf/passwd

添加用户名=密码对,如:user=123

svnserve.conf配置说明:

  1. anon-access = read
  2. auth-access = write
  3. password-db = passwd

anon-access 和 auth-access 分别指定匿名和有权限用户的权限,默认给匿名用户只读的权限,如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默认跟 snvserve.conf 在同一个目录。

3、导入版本库
把 /var/www 下的内容导入到版本号中:

  1. sudo svn import -m "第一次导入" /var/www file:///var/svnroot/inlocals

显示结果:
增加 /var/www/index.html
增加 /var/www/index.php

提交后的版本为 1。

4、启动服务器
svn 服务器可以用两种方法架设:
使用 svn 自带的 svnserve 实用程序和利用 Apache 架设。
1)使用 svnserve 搭建 svn 服务器。
启动svn服务器:

  1. sudo /usr/bin/svnserve -d -r /var/svnroot/

测试服务器:

  1. sudo svn checkout svn://192.168.0.4/inlocals

A inlocals/index.html
A inlocals/index.php
取出版本 1。

修改index.html,提交修改:svn commit –username kokko –password 123456
正在发送 index.html
传输文件数据 .
提交后的版本为 2。

可以尝试重命名文件:svn rename index.php test.php
新增一个文件:svn add index.php
移动 index.php 到 blog/app 下:svn move index.php blog/app

注意:
我提交时提示
svn: 不能打开文件“/var/www/inlocals/.svn/lock”: Permission denied
此处是权限问题,我执行sudo chmod -Rf 777 /var/svnroot/inlocals/可以顺利提交,但是为了安全起见,可以为svn专门建立一个用户组。

注:
以前我一直用xinetd来启动svnserve的守护进程。
安装xinetd
sudo apt-get install xinetd

编辑 /ect/xinetd.conf

  1. service svn
  2. {
  3.         disable         = no
  4.         socket_type     = stream
  5.         protocol        = tcp
  6.         wait            = no
  7.         user            = svn
  8.         group           = subversion (或svn))
  9.         umask           = 002
  10.         port            = 3690
  11.         server          = /usr/bin/svnserve
  12.         server_args     = -i -r /home/svn
  13. }

2)利用 Apache 架设Subversion 服务器
首先为apache安装mod_dav和mod_dav_svn两个模块:
sudo apt-get install libapache2-svn

确定 mod_dav 和 mod_dav_svn 被打开:
a2enmod dav dav_svn

配置Apaache,打开httpd.conf
添加:

  1.         DAV svn
  2.         SVNParentPath /var/svnroot/

执行sudo svn checkout 检出版本库

设定用户的权限和验证

现在不管谁都可以往SVN里塞东西,为了更好的控制,我们还需要设定访问权限,比如让指定的用户可以 commit,其他的只能 checkout。
因为我们在 Apache 上,所以访问权限的控制就可以直接借用 Apache 的,首先为你的用户设定用户名和密码:
先为管理员添加一个帐号,
sudo htpasswd -cmb /home/kokkowon/passwords admin 111111
再增加一个帐号:
sudo htpasswd -mb /home/kokkowon/passwords kokko 222222
然后修改httpd.conf:

  1. DAV svn
  2. SVNParentPath /var/svnroot/
  3. AuthType Basic #验证类型设置
  4. AuthName "Please Auth your accout" #验证提示框
  5. AuthUserFile /home/kokkowon/passwords    #验证配置文件
  6. Require valid-user

说明:
最后,你需要把 版本根目录所在的目录和文件的所有权都改成系统中操作 Apache 的用户,这样在 commit 的时候才会被 Apache 认可。





阅读(608) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~