zoukankan      html  css  js  c++  java
  • Ubuntu配置svn备忘

    一、安装环境

    Ubuntu 11.10

    二、安装svn

    $ sudo apt-get install subversion

    命令默认安装在/usr/bin/目录

    三、创建仓库

    1.确定svn仓库的根目录

    这样以后再为项目添加仓库只要添加在这个目录下面就可以了。

    $ sudo mkdir /var/svn

    在选择目录时,一定要保证目录的所在磁盘空间足够大。

    2.为项目test创建仓库

    $ cd svn
    $ sudo svnadmin create test

    可以查看一个生成的test仓库的目录结构,如下:

    $ ll test/
    drwxr-xr-x 6 root root 4096 Mar 30 21:21 ./
    drwxr-xr-x 3 root root 4096 Mar 30 21:21 ../
    drwxr-xr-x 2 root root 4096 Mar 30 21:21 conf/
    drwxr-sr-x 6 root root 4096 Mar 30 21:21 db/
    -r--r--r-- 1 root root    2 Mar 30 21:21 format
    drwxr-xr-x 2 root root 4096 Mar 30 21:21 hooks/
    drwxr-xr-x 2 root root 4096 Mar 30 21:21 locks/
    -rw-r--r-- 1 root root  229 Mar 30 21:21 README.txt

    查看一下test/conf/目录的文件,这是我们主要配置的目录

    $ ll test/conf/
    drwxr-xr-x 2 root root 4096 Mar 30 21:21 ./
    drwxr-xr-x 6 root root 4096 Mar 30 21:21 ../
    -rw-r--r-- 1 root root 1080 Mar 30 21:21 authz
    -rw-r--r-- 1 root root  309 Mar 30 21:21 passwd
    -rw-r--r-- 1 root root 2279 Mar 30 21:21 svnserve.conf

    svnserve.conf是test仓库主配置文件

    passwd是密码文件,当前仓库下的所有用户都记录在这里

    authz是权限文件,用于为passwd中的用户配置权限

    四、配置test仓库

    三个配置文件中都不允许出现中文字符,否则会出错误。

    我们对test仓库配置的目标:

    用户:developer(对仓库有写权限),tester(对仓库只有读权限),其它人员无权访问此仓库

    1.配置svnserve.conf

    anon-access = none
    auth-access = write
    password-db = passwd
    authz-db = authz
    realm = test

    anon-access指匿名用户,这里给了none,即无任何权限

    auth-access指有权限的用户,这里给了write,即可以写

    以上两项的值可为:none,read和write

    password-db和authz-db分别指仓库用户的密码文件和权限文件

    如果你有多个仓库,且用户及权限都相同,可以这样做:

    将passwd和authz文件放在一个目录中(例如:/var/svn/conf/),且修改每个仓库的svnserve.conf:

    password-db = /var/svn/conf/passwd

    authz-db = /var/svn/conf/authz

    realm是仓库的唯一标识,所以确保每一个仓库的realm值不相同。

    2.配置passwd

    [users]
    developer = developer
    tester = tester

    这里使用的是用户名和密码对

    3.配置authz

    [/]
    developer = rw
    tester = r

    这里不使用组

    到这里对test仓库的配置结束了,下面启动服务并测试

    五、启动服务

    $ sudo svnserve -d -r /var/svn

    启动时指定的目录是仓库的上层目录。

    如果你有多个svn仓库,且不在同一个目录下,可以启动多个svnserve,只要指定端口就好了,如下:

    $ sudo svnserve -d -r /var/svn --listen-port 9999

    六、使用svn

    1.使用developer用户迁出代码

    $ svn checkout svn://localhost/test dev --username developer

    checkout的地址格式:svn://svnserver_ip/仓库名称

    dev指迁出后的代码目录

    查看一下迁出后的svn信息

    $ cd dev
    $ svn info
    路径: .
    URL: svn://localhost/test
    版本库根: svn://localhost/test
    版本库 UUID: 850157da-372b-492d-a43b-ed2eb1e3752f
    版本: 0
    节点种类: 目录
    调度: 正常
    最后修改的版本: 0
    最后修改的时间: 2013-03-30 21:21:31 +0800 (Sat, 2013-03-30)

    2.添加文件

    $ cal >> cal.log
    $ svn add cal.log 
    A cal.log
    $ svn commit -m 'add cal.log'
    增加 cal.log
    传输文件数据 .
    提交后的版本为 1

    因为这里使用的是developer用户,所以有添加和修改权限

    3.使用tester用户迁出代码

    $ svn checkout svn://localhost/test test --username tester

    4.使用tester用户修改cal.log文件,验证权限

    $ svn commit -m 'update cal.log'
    svn: 提交失败(细节如下):
    svn: 认证失败

    说明权限设置成功

    5.更新代码

    developer用户修改cal.log文件:

    $ cat cal.log
         March 2013       
    Su Mo Tu We Th Fr Sa  
                    1  2  
     3  4  5  6  7  8  9  
    10 11 12 13 14 15 16  
    17 18 19 20 21 22 23  
    24 25 26 27 28 29 30  
    31
    $ cal >> cal.log
    $ svn commit -m 'update cal.log'
    正在发送       cal.log
    传输文件数据 .
    提交后的版本为 2

    tester用户更新:

    $ svn update
    版本 2。
    $ cat cal.log
         March 2013       
    Su Mo Tu We Th Fr Sa  
                    1  2  
     3  4  5  6  7  8  9  
    10 11 12 13 14 15 16  
    17 18 19 20 21 22 23  
    24 25 26 27 28 29 30  
    31                    
         March 2013       
    Su Mo Tu We Th Fr Sa  
                    1  2  
     3  4  5  6  7  8  9  
    10 11 12 13 14 15 16  
    17 18 19 20 21 22 23  
    24 25 26 27 28 29 30  
    31                    

    6.导入代码

    如果你已经有代码了,可以使用import将代码导入到版本库

    $ cd init/
    $ ls
    init.log
    $ svn import svn://localhost/test --username developer
    日志信息未修改,或未指定
    a)终止,c)继续,e)编辑:
    c
    认证领域: <svn://localhost:3690> test
    “dev1”的密码: 
    增加 init.log
    
    提交后的版本为 3

    这样就导入成功了,可以在test中更新一下代码

    $ cd ../test/
    $ svn update
    A    init.log
    更新到版本 3

    当然,import最好在仓库初始化时使用,否则会引起代码覆盖等严重损失。

    六、总结

    svn服务的配置相对较容易,这里只是最基本的使用,如需要深入了解,见参考中的网址。

    在配置过程中遇到最多的可能是有写权限的用户会报"认证失败"错误,这个问题一般都是三个配置文件有写错的地方,仔细检查了。

    七、参考

    http://subversion.apache.org/

    http://zh.wikipedia.org/zh-cn/Subversion

    http://baike.baidu.com/view/183128.htm 

  • 相关阅读:
    Activity的生命周期和启动模式
    网络基础1
    Jersey用户指南学习笔记1
    IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务
    Java并发编程实战笔记—— 并发编程4
    Java并发编程实战笔记—— 并发编程3
    Java并发编程实战笔记—— 并发编程2
    7.2.4
    7.2.4
    7.2.3
  • 原文地址:https://www.cnblogs.com/arrongao/p/linux_svn.html
Copyright © 2011-2022 走看看