ubuntu14.04下svn版本管理系统的安装及常用命令的使用整理

ubuntu14.04下安装svn
$sudo apt-get install subversion
执行这一步就安装完成了,在ubuntu先安装很方便

安装完成后,创建版本库目录,由于是本地环境,就在某个目录下建立一个目录,如果是真实环境,就是相当于服务器上的目录,由于本地,则就模拟出一个服务器上的一个版本库

$sudo mkdir -p /opt/subverdion/svn ###创建版本库目录
$sudo svnadmin create /opt/subversion/svn ###创建版本库,生成配置文件

配置svn,配置文件都在/opt/subversion/svn

1).首先配置用户
$sudo vim /opt/subversion/svn/conf/passwd

添加格式:用户名 = 密码
如:xc = xc123

2).配置权限和分组

$sudo vim /opt/subversion/svn/conf/authz

[groups]    ###分配组,行首不能有空格
team1 = zhangsan,lisi   ###在组1中有zhangsan和lisi
team2 = wangwu            ###在组2中只有wangwu

[svn:/]        ###分配权限,
zhangsan = rw
@team1 = rw     ###在组名前需要加上@符号,在用户前不需要加@符号,在team1组中的成员有’读写’的权限
@team2 = r        ###在team2组中的成员有‘读‘的权限
* =             ###其他用户没有任何权限

3).配置/opt/subversion/svn/conf目录下的 svnserve.conf文件,去掉注释
$sudo vim /opt/subversion/svn/conf

anon-access = none        ###将以前的read改成none
auth-access = write
password-db = passwd    ###
authz-db = authz

4).开启svn服务
$sudo svnserve -d -r /opt/subversion
    -d:指定程序后台运行
    -r:指定svn的服务目录,即版本库的目录
    --listen-port 端口 :设置端口,默认为3690

5).验证是否开启成功
$ sudo netstat -anp | grep svnserve
返回以下信息
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      18253/svnserve  

6).如何关闭svnserve
$sudo pstree | grep svn        #查看

$sudo killall svnserve        #关闭


##############
上面六步相当于在服务器上的设置
完成之后,进行如下操作
##############

在家目录下建立一个本地目录(相对与服务器来说)

$mkdir -p workspace/project

$cd /workspace/project

$sudo svn checkout svn://127.0.0.1/svn    #和服务器上建立关联,svn目录是在/opt/subversion/下的svn目录
输入上述命令后,在ubuntu14.04下会弹出一个选项卡,让你填一下密码用户名的东西,自己看着填就可以了

之后在workspace/project目录下

$ll -a 可以看到有一个隐藏文件夹.svn,这个目录下记录的都是用户的各种操作

##############
经过上述的步骤,svn的配置基本完成了,之后就可以进行svn命令操作了

可以sudo update 更新看一下,服务器的文件同步到本地来了没有,可以看到svn目录的出现

**注:在ubuntu下使用svn命令的时候,一般要sudo执行
##############


/****************第一个错误***************************/
xc@wen:~/workspace/project01$ svn add aaa
svn: E155004: 运行“svn cleanup”删除锁 (运行“svn help cleanup”以得到详细信息)
svn: E155004: 工作副本“/home/xc/workspace/project01”已经锁定
svn: E200031: sqlite[S8]: attempt to write a readonly database
svn: E200031: 额外错误:
svn: E200031: sqlite[S8]: attempt to write a readonly database
******************/
出现上面这个时要用root的身份登录才有用,以普通用户会报上面的错误

/****************第二个错误***************************/

当出现svn: E155007: “/opt/subversion”不是工作副本的时候,这个是因为在配置authz权限的时候
[groups]
team1 = xc,lisi
team2 = lisi

[proj01:/] ######在这里冒号和/之间不能有空格
xc = rw

@team1 = rw
@team2 = r
* =

-----------------------------------------------------------------


linux下svn日常使用的常用命令
在使用svn时先看看svn下如何获得帮助,使用svn help即可获得svn的帮助,使用svn help command,即可查找子命令下的帮助,如svn help update

1).svn checkout svn://127.0.0.1/svn        ###第一次登录到svn服务器时需输入,以后则不需要checkout了
2).svn update 也可以简写成svn up            ###将版本库的修改合并到工作副本中,下载服务器上更新了的文件
3).提交或修改文件
    a.对于新创建的文件
        svn add PATH/TO/FILE    ###先添加文件至版本控制目录
        svn commit -m "xxxxx"    ###把本地的文件同步到服务器的版本库目录下,-m:指定日志信息,一般要指定日志信息,不然会报错,svn commit也可写成svn ci
    b.对于修改的文件,直接提交
        svn commit PATH/TO/FILE -m "xxxxxx"  ###直接提交
4).查看版本库日志,这里的日志记录记录了commit的-m选项里指定的日志信息
    svn log
5).将改动的文件还原至以前的版本
    a.修改过,但未提交
        $ sudo vim test.txt         ###修改文件
        $ sudo svn revert test.txt     ###恢复文件
       b.修改了,并已提交到服务器
           $ sudo vim test.txt
        $ sudo svn commit -m "test file"
        $ sudo svn update
        $ sudo svn diff -r 旧版本:新版本      svn://127.0.0.1/svn/test.txt    ###查看就版本与新版本之间的区别,如sudo svn diff -r 3:4 svn://127.0.0.1/svn/test.txt
        $ sudo svn merge -r 新版本:旧版本 svn://127.0.0.1/svn/test.txt    ###恢复至旧版本,如:sudo svn merge -r 4:3 svn://127.0.0.1/svn/test.txt
6).列出版本库中的目录内容
        $ sudo list
7).在svn服务器端创建目录
        $ sudo svn mkdir svn://127.0.0.1/svn/xc [-m "xxxxx"]
8).    目录的拷贝
        $ sudo svn copy 源文件 目的文件
9). 从版本库中删除文件和目录
        本地删除:rm -rf file
        服务器删除:sudo del svn://127.0.0.1/svn/test.txt -m "del file"
10).重命名文件或目录move (mv, rename, ren)
    svn move 源文件 目标文件
    sudo svn mv svn://127.0.0.1/proj01/xc svn://127.0.0.1/proj01/xxc
            
        
    
        
        


















本文出自 “小城工作室” 博客,请务必保留此出处http://xcroom.blog.51cto.com/7941996/1639926

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。