apt-get install subversion
mkdir /usr/local/svn
mkdir /usr/local/svn/project
mkdir /usr/local/svn/conf
(----------/usr/local/svn/conf/svnserve.conf------------)
[general]
anon-access=read //如果不想让匿名用户下载,则改成none
auth-access=write
password-db=passwd
authz-db=authz
其中anon-access和auth-access分别为匿名和有权用户的权限,默认给匿名用户只读。
(----------/usr/local/svn/conf/passwd---------)
[users]
user1=123456
user2=123456
user3=123456
(----------/usr/local/svn/conf/authz---------)
[groups]
group1=user1,user2
group2=user3
[/]
@group1=rw
*=r
这里设置了三个用户user1、user2、user3密码都是123456
其中user1、user2属于group1组,有读和写的权限,user3属于group2组只有读的权限。
chmod +x /usr/local/svn/conf/authz
chmod +x /usr/local/svn/conf/passwd
chmod +x /usr/local/svn/conf/svnserve.conf
(----------/usr/local/svn/svn_start.sh----------)
#!/bin/sh
/usr/bin/svnserve -d -r “/usr/local/svn/project” --config-file “/usr/local/svn/conf/svnserve.conf”
加入执行权限 chmod +x /usr/local/svn/svn_start.sh
cd /usr/local/svn/
./svn_start.sh
注意:svn服务程序是一个守护进程,其在后台运行。
svnadmin create /usr/local/svn/project/test
此时在/usr/local/svn/project/test目录下有如下文件
conf db format hooks locks README.txt
svn checkout svn://192.168.0.100/test ##简写:svn co
使用ls -a查看导出的test目录,可以看到其中包含一个.svn的隐藏目录,这个目录中存放着svn版本管理的一些数据。
svn add test.php
svn commit -m “add test file for my test” test.php ##简写:svn ci
svn lock -m “lock test file” test.php
svn unlock test.php
##更新到最新版本
svn update test.php ##简写: svn up
##更新到指定版本
svn update -r 200 test.php
##查看目录下的文件和子目录的状态(正常不显示)
svn status path ##简写: svn st
## ?: 不再svn的控制中
## M: 内容被修改
## C: 发生冲突
## A: 预定加入到版本库
## K: 被锁定
##查看目录下所有的文件和子目录的状态
svn status -v path
第一列为最高版本号,第二列为当前工作版本号,第三列最后修改人,第四列文件路径。
svn delete test.php -m “delete test file” ##简写: svn (del, remove, rm)
svn log test.php
svn info test.php
##将修改的文件与基础版本比较
svn diff test.php ##简写:svn di
##比较两个版本之间的差异
svn diff -r 200:201 test.php
svn merge -r 200:201 test.php ##一般都会产生冲突,需要处理一下
11.SVN帮助
svn help
svn list path ##简写:svn ls
svn mkdir
svn revert ##该命令不会恢复被删除的目录
svn switch
svn resolved
svn cat -r PREV test.php > test2.php ##PREV是上一版本,也可以写具体版本号