您的位置:首页 > 其它

ubuntu下安装Subversion 版本控制工具

2009-04-27 23:50 381 查看
本文假设已经正确安装APACHE服务器.

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

2. 服务器配置
创建 SVN 仓库
许多位置都可以放置 Subversion 文件仓库,其中两个最常用的是:/usr/local/svn 以及 /home/svn。我存放在 /home/svn.
创建目录:
$ sudo mkdir -p /home/svn/myproject
创建Subversion库:
$ sudo svnadmin create /home/svn/myproject
将所有权授予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 htpasswd2 -c /etc/subversion/passwd andyluo
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

--=========================================================================

Ubuntu基于svnserve的subversion配置

首先简单介绍一下subversion:

subversion是一个很好的版本控制软件,对于团队协作开发来说必不可少。subversion是一个自由/开源的版本控制系统。可以将文件存放在中心版本库里。可以记录每一次文件和目录的修改情况。并可以查看数据的更改细节。

好了,废话少说,介绍subversion的有很多,需要的话大家google一下。下面是我配置过程中的操作,简单记录如下:

版本库创建

1、Ubuntu下安装subversion
sudo apt-get install subversion subversion-tools
2、版本库创建(假设版本库为/home/wang/svn/repos)
(1)创建文件夹
$ mkdir /home/wang/svn
$ mkdir /home/wang/svn/repos
(2)运行创建版本库的命令,指定数据存储为 FSFS
$ svnadmin create --fs-type fsfs /home/wang/svn/repos

如果一切正常,命令执行后不会有任何反馈信息而迅速返回,这样,一个新的版本库就被创建出来了。我们来查看一下生成的版本库结构:

$ ls -l /home/wang/svn/repos
总用量 24
drwxr-xr-x 2 wang wang 4096 2009-03-15 19:13 conf 存放了版本库的配置文件,包括用户访问控制和权限控制等内容
drwxr-sr-x 6 wang wang 4096 2009-03-15 19:13 db 存放所有受版本控制的数据,不用直接修改和查看,Subversion 的命令可以安全的操作这个目录
-r--r--r-- 1 wang wang 2 2009-03-15 19:13 format 记录了版本库的布局版本号
drwxr-xr-x 2 wang wang 4096 2009-03-15 19:13 hooks 存放着钩子脚本及其模版(一种版本库事件触发程序)
drwxr-xr-x 2 wang wang 4096 2009-03-15 19:13 locks 存放着 Subversion 版本库锁定数据
-rw-r--r-- 1 wang wang 229 2009-03-15 19:13 README.txt

注:如果安装了Apache模块,会出现一个dav 目录。dav是提供给 Apache 相关模块的目录;

3、项目添加
假设/home/wang/project为项目文件夹,目录结构如下:
|
project-group1
| |
| branches
| |
| trunk
|
project-group2
|
branches
|
trunk
用 svn import 命令来进行项目的导入:
$ svn import /home/wang/project/ file:///home/wang/svn/repos/ --message "init"
增加 /home/wang/project/project-group1
增加 /home/wang/project/project-group1/trunk
增加 /home/wang/project/project-group1/branches
增加 /home/wang/project/project-group2
增加 /home/wang/project/project-group2/trunk
增加 /home/wang/project/project-group2/branches

提交后的版本为 1。
注:svn import --help可以查看帮助信息 ,--message选项去掉会导致导入失败。
4、版本库查看
在上述项目导入完成以后,我们可以用 svn list 确认导入的项目是否正确:
$ svn list --verbose file:///home/wang/svn/repos
1 wang 3月 15 19:40 ./
1 wang 3月 15 19:40 project-group1/
1 wang 3月 15 19:40 project-group2/
另外,如果要查看最新修订版本的信息,可以使用 svnlook info 命令:
$ svnlook info /home/wang/svn/repos/
wang
2009-03-15 19:40:08 +0800 (日, 2009-03-15)
4
init
命令输出了这个版本库的最新修订版本信息,包括作者、时间、日志字数和日志内容等。除开最新修订版以外,我们还可以在命令后面接上 “--revision 版本号” 来指定某一个修订版的显示。
例如:
$ svnlook info /home/wang/svn/repos/ --revision 0

2009-03-15 19:33:15 +0800 (日, 2009-03-15)
0
注意:新建的版本库版本号为0,以后每对版本库操作一次,版本号加1

另外,我们还可以用如下命令来显示版本库的具体树形结构,后面的 “--show-ids” 选项指定显示每一个显示元素的修改版本 ID。
$ svnlook tree /home/wang/svn/repos/
/
project-group1/
trunk/
branches/
project-group2/
trunk/
branches/

$ svnlook tree /home/wang/svn/repos/ --show-ids
/ <0.0.r1/839>
project-group1/ <0-1.0.r1/241>
trunk/ <1-1.0.r1/0>
branches/ <2-1.0.r1/78>
project-group2/ <3-1.0.r1/613>
trunk/ <4-1.0.r1/366>
branches/ <5-1.0.r1/446>

其他说明:
这里有一个需要注意的问题,那就是,“svnadmin” 和 “svnlook” 都被认为是服务器端的管理工具,只被用于版本库所在的机器,用来检查和维护版本库,不能通过网络来执行任务。所以,试图将 URL 甚至本地 file 路径传递给这两个程序,都是错误的。

Subversion 还有很多管理工具可供管理员应用,需要了解这项工具的使用方法,可以用 svn help, svnadmin help, svnlook help 等等命令查看帮助信息

5、基本的服务器配置
svnserve 是 Subversion 自带的一个小型的服务器,它使用独立的协议与客户端。我们可以通过
svnserve -i
作为 inetd 启动或者
svnserve -d
作为守护进程启动一个服务。服务器启动后,客户端即可以通过绝对路径访问。如上例可以访问 svn://服务器IP/home/wang/svn/repos。同时可以指定一些选项,常用的如 -r,用来指定版本库的根路径,例如假设版本库位于 /home/wang/svn/repos:

svnserve -d -r /home/wang/svn
则客户端可以通过如下 URL 访问服务器:svn://服务器IP/repos, 这样可以有效的避免暴露本地路径。另外如 --listen-port,--listen-host 可以指定绑定的地址和端口,-R 可以强制设定为 Read-Only 模式。
(1)启动服务
这里我们将svnserve作为守护进程,且指定版本库根路径进行启动:
$ svnserve -d -r /home/wang/svn
如果将本机配置为服务器且IP为192.168.5.79,则现在svn客户端可以通过svn://192.168.5.79/repos来访问版本库了。
(2)配置服务器
/home/wang/svn/repos/conf 下有三个文件是来管理访问权限的:authz, passwd, svnserve.conf。
<1>如果不进行访问权限控制,版本库默认所有用户都只有读权限,如果允许所有用户都可以读写版本库,则需要简单修改svnserve.conf如下:
[general]
anon-access = write
<2>如果需要进行访问权限控制,防止不相干人员的误操作,配置方法如下:
修改svnserve.conf
[general]
anon-access = none 不允许匿名访问
auth-access = write 允许写入
password-db = passwd 访问时需要输入密码
authz-db = authz 访问权限设置

修改 passwd 配置文件,增加允许访问的用户
[users]
user1= 123456
格式:用户名=密码

修改 authz 配置文件,设置工作组,和目录访问权限
[groups]
ppc = user1,user2

[repos:/]
@ppc = rw
* =
ppc组成员有两名,user1和user2
组里所有人对整个项目目录都有读写权限。如果要设置工程里某个目录具体的访问权限可以如下设置

[groups]
ppc = user1,user2
ppc_tmp = user3,user4

[myproject:/]
@ppc = rw
* =

[myproject:/test]
@ppc_tmp = rw
* =

这样,user1和user2 对整个工程有修改权限,而user3和user4 只是对工程根目录下的test目录有修改权限。

假设我添加了两个用户wang和zhang,对整个项目目录都有读写权限,密码均设置为123

6、svn基本操作
(1)检出(checkout)
svn co url path
例如:wang用户取出版本库的project-group1目录到本地副本/home/wang/group1的操作:
$ svn co svn://192.168.5.79/repos/project-group1 /home/wang/group1
认证领域: <svn://192.168.5.79:3690> 65b225be-be73-485f-9464-92f23637bc53
“wang”的密码:
认证领域: <svn://192.168.5.79:3690> 65b225be-be73-485f-9464-92f23637bc53
用户名: wang
“wang”的密码:
A /home/wang/group1/trunk
A /home/wang/group1/branches
取出版本 1。

(2)添加文件(add)
svn add path
如果由于项目需要,在/home/wang/group1/trunk目录下添加了文件shuoming,则需要有svn add操作:
$ svn add /home/wang/group1/trunk/shuoming
A /home/wang/group1/trunk/shuoming

(3)将本地副本的改变提交给版本库(commit)
svn commit -m “messages” path-to-commit
wang@wang-desktop:~$ svn commit -m "add file shuoming" /home/wang/group1/trunk
认证领域: <svn://192.168.5.79:3690> 65b225be-be73-485f-9464-92f23637bc53
“wang”的密码:
增加 group1/trunk/shuoming
传输文件数据.
提交后的版本为 2。

注意:commit操作必须带上-m参数,参数可以为空,但是必须写上-m

(4)删除文件
svn delete path
将本地副本中的shuoming文件删除的操作如下:
$ svn delete /home/wang/group1/trunk/shuoming
D /home/wang/group1/trunk/shuoming
如果使删除改变更新到版本库,同样需要(3)commit操作。

(3)更新文件
svn update path-to-update
如果本地副本的版本比版本库上的低,则可通过此操作进行更新。

(4)查看日志
svn log path
$ svn log /home/wang/group1
认证领域: <svn://192.168.5.79:3690> 65b225be-be73-485f-9464-92f23637bc53
“wang”的密码:
------------------------------------------------------------------------
r1 | wang | 2009-03-15 19:40:08 +0800 (日, 2009-03-15) | 1 line

init
------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: