ubuntu安装与搭建svn

来源:互联网 发布:javascript模拟器 编辑:程序博客网 时间:2024/05/29 07:49

前言:安装svn前要保证vim好使:

sudo apt-get install build-essential
sudo apt-get install vim
sudo vim xorg.conf

如果vim无法安装,请参考:http://blog.csdn.net/lu1024188315/article/details/62422902

1. 安装SVN

代码如下:
sudo  apt-get install subversion

2. 建立svn仓库

  1). 建立svn目录:sudo mkdir /home/.svn(使用隐藏目录)
  2). cd /home/.svn   
  3). mkdir astar
  4). 创建仓库astarsudo svnadmin create /home/.svn/astar,执行完毕后astar目录有svnadmin创建的目录和文件
  5). mkdir test
  6). 创建仓库testsudo svnadmin create /home/.svn/test,执行完毕后test目录有svnadmin创建的目录和文件

3. 配置和管理svn

1). 每个仓库的配置文件在$repos/conf/(例如:/home/.svn/test/conf/)下,sudo vi  svnserve.conf,配置项在[general]下:
    anon-access:匿名用户的权限,可以为readwritenone,默认值read。不允许匿名用户访问:anon-access = none
    auth-access:认证用户的权限,可以为readwritenone,默认值write
    password-db:密码数据库的路径,去掉前边的#
    authz-db:认证规则库的路径,去掉前边的#
    注意:这些配置项的行都要顶格,否则会报错。修改配置后需要重启svn才能生效。

代码:

#去掉#[general]前面的#
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access = none
#认证用户的权限,可以是read,write,none,默认为write
auth-access = write
#密码数据库的路径,去掉前面的#
password-db = passwd

#认证规则库的路径

authz-db = authz

退出按Esc 输入:wq! 


2). 配置passwd文件(在/home/.svn/test/conf/下)
    这是每个用户的密码文件,比较简单,就是用户名=密码,采用的是明码。如allen=111111,访问:sudo vi passwd
  3). 配置authz文件
    1. [groups] section:为了便于管理,可以将一些用户放到一个组里边,比如:owner=allen,ellen
    2. groups下边的sections表示对一个目录的认证规则,比如对根目录的认证规则的section[/]。设置单用户的认证规则时一个用户一行,如:
      [/]   
      allen=rw  #allen对根目录的权限为rw
      ellen=r    #ellen对根目录的权限为r
      如果使用group,需要在group名字前加@,
      @owner=rw  #group owner中的用户均为rw,等价于上边的两句话
    启动时如果从/home/.svn/astar启动,/就是astar目录,用如上方式以astar目录为根设置权限。
    如果从/home/.svn/启动,每个仓库根还是自己的起始目录。可以采用如上方式设置astar的权限,也可以采用如下方式:
      [astar:/]
      @owner=rw
    设置test的权限如下:
      [test:/]
      @harry_and_sally = rw
    简言之,每个仓库的根目录(/)就是自己的起始目录;[repos:/]这种方式只适用于多仓库的情况;[/]适合于单仓库和单仓库的方式。
    3. 不能跨越仓库设置权限。

示例:

[groups]

owner = lubangbang,liting

[/]

lubangbang = rw

liting = r

4. 启动和停止svn    

1). 启动:
    1. astar目录启动,svnserve -d -r /home/.svn/astar,根目录(/)astarauthz中规则的配置使用section[/]。访问方式为:
      svn://192.168.0.87/
    2. .svn目录启动,svnserve -d -r /home/.svn,根目录(/).svnauthz中对astar的配置使用section[astar:/] ,test的配置使用section[test:/]。访问方式为:
      svn://192.18.0.87/astar
      svn://192.18.0.87/test
    如果需要svn自启动,把命令加入/etc/rc.local中。

注意:其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接用svn://服务器ip来访问了。如果服务器有多ip的话—listen-host来指定监听的ip地址,我们可以在svn客户端中通过svn://192.168.1.16来访问svn服务器;对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径.,我们有两个代码仓库/home/repo1/home/repo2,我们用svnserve -d -r /home --listen-host 192.168.1.16来启动,那么在客户端访问时可以用svn://192.168.1.16/repo1svn: //192.168.1.16/repo2来分别访问两个项目.
  2).检查svn服务器是否已经启动(svn默认使用3690端口):netstat -an | grep 3690
  3).停止:killall svnserve

5. svn client

  推荐使用TortoiseSVN http://tortoisesvn.tigris.org/
  Eclipse插件,http://subclipse.tigris.org/

6.Subversion添加用户

   (1) Subversion添加第一个用户,要加参数-c。以后不用加。//这里特别注意是添加第一个用户,如果该配置中已有用户千万不要-c不然会把存在的用户全部清空的。如果有用户直接追加不需要-c

 htpasswd -c /home/svn/passwd.conf user1

  2Subversion追加用户:htpasswd /home/svn/passwd.conf user2 passwd.conf文件的生成内容是用户名加上密码的 MD5密文。

        注意:如何提示“htpasswd”未安装或者不存时,先进行下面安装:

        sudo apt-get install apache2-utils

        sudo apt-get install libapache2-svn

示例:

[groups]
vip = wang
admin = wangqixuan, yang
develop-manager = zhong
business-manager = shi
developer = ma, hu, zhou, cen, huang


[repos:/]
@admin = rw
* = r

[repos:/develop/01-Windows项目组/01-ARM架构]
@vip =rw
@admin = rw
@develop-manager = rw
* =
[repos:/develop/01-Windows项目组/02-X86架构]
@vip =rw
@admin = rw
@develop-manager = rw
zhou = rw
hu =rw
ma = r
* =

[repos:/develop/02-Linux项目组/01-ARM架构]
@vip =rw
@admin = rw
@develop-manager = rw
cen = r
huang = r
* = 

[repos:/develop/02-Linux项目组/02-X86架构]
@vip =rw
@admin = rw
@develop-manager = rw
cen = r
huang = r
* =

[repos:/develop/个人目录]
@vip =rw
@admin = rw
@develop-manager = rw
@developer = rw
* = 
其中* = 表示其它所有用户都没有任何权限。@表示用户组,*表示所有用户,[/]表示全部目录。注意顶格写。UTF-8格式才能配置SVN权限,Linux下默认UTF-8Windows下有转换工具,比如Eclipse->Edit->最后一项。一般针对最末梢文件设置权限。

特别注意:权限分配时,不能写成cen, huang =r,这样提交时会出现错误:svn Commit failed checkout of 403 forbidden。应该写成cen = rhuang = r



 


0 0
原创粉丝点击