版本控制器svn的本地多项目管理方法

1.服务器部署

(1)安装svn

1
dnf install -y subversion

(2)创建svn多版本库

1
2
3
mkdir $HOME/svn
svnadmin create $HOME/svn/project1
svnadmin create $HOME/svn/project2

在相应目录下的conf文件夹中有如下三个文件:
svnserve.conf: svn服务配置文件下
passwd: 用户名密码文件
authz: svn权限配置文件

(3)配置svn(为便于配置管理,将所有版本库的“账号密码”和“登陆用户权限”等控制文件指定为同一个配置文件)

1
2
cp $HOME/svn/project1/conf/passwd $HOME/svn/
cp $HOME/svn/project1/conf/authz $HOME/svn/

修改每个项目版本库的/conf/svnserve.conf(访问控制文件):

1
2
vi $HOME/svn/project1/conf/svnserve.conf
vi $HOME/svn/project2/conf/svnserve.conf

修改内容如下:
默认# anon-access = read | 去掉首字符“#”,read改为none,表示不允许匿名访问
默认# auth-access = write | 去掉首字符“#”
默认# password-db = passwd | 改为password-db = ../../passwd,指向$HOME/svn/passwd
默认# authz-db = authz | 改为:authz-db = ../../authz,指向$HOME/svn/authz
修改后的文件内容如下:
anon-access = none
auth-access = write
password-db = ../../passwd
authz-db = ../../authz

(4)修改$HOME/svn/passwd文件内容:
[左为用户名、右为密码]
user1 = user1123
user2 = user2123

(5)修改$HOME/svn/authz文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[groups]
project1=user1
project2=user1,user2
%指定所有的版本库默认只读,root可读写
[/]
* = r
root = rw
%user1可读写project1版本库,@的含义可以用指针帮助理解
[project1:/]
@project1 = rw
%user1,user2可读写project2版本库
[project2:/]
@project2 = rw

(6)启动服务器$HOME/svn

1
svnserve -d -r $HOME/svn % -d表示后台运行,-r表示服务器的根目录

即可启动$HOME/svn/中的所有项目版本库project1,project2

(7)项目初始化

1
svn import $HOME/yourFile file://$HOME/svn/project1

将会拷贝目录yourFile到版本库的project1下

1
svn list file://$HOME/svn/project1	%用来查看版本库中的文件

(8)关闭svn

1
killall svnserve

注意:修改authzpasswd文件后,需要关闭和重启svn服务器

2.客户端操作

(1)将文件从版本库取出到本地目录
首先进入你想存放取出文件的位置,然后

1
svn checkout svn://192.168.0.100/project1	%接着输入用户名和密码

这里的数字代表本地电脑的IP,用ifconfig命令查询,IP后紧跟的仅仅是$HOME/svn目录以下的项目名
(这是因为在启动服务器时已经将$HOME/svn设为根目录了)

1
svn checkout svn://192.168.0.100/project1 -r 5 	%取出指定版本的文件

(2)往版本库中添加新的文件,更新版本库

1
2
3
svn add xxx.txt     %此命令得在checkout命令执行的目录中才能生效
svn commit xxx.txt -m "add 123.txt" #“”中填写备注,只提交123.txt
svn commit -m "LogMessage" %提交当前目录下的所有文件

(3)删除文件,更新版本库

1
2
svn delete xxx.txt
svn ci -m "delete testfile"

(4)更新本地工作副本

1
2
svn update -r 200 xxx.txt 	%将本地的文件xxx.txt还原到版本200
svn update %如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本

(5)查看文件修改记录,及其版本号的变化

1
svn log xxx.txt

(6)查看文件详细信息(路径、版本、时间、提交者等信息)

1
svn info xxx.txt

(7)比较版本间的差异

1
svn diff -r 2:102 xxx.txt 	%对版本2和版本102比较差异

(8)版本库下的文件和目录列表

1
svn list file://$HOME/svn/project1

(9)创建新目录

1
2
svn mkdir myDirectory
svn commit -m "Add myDirectory"

(10)移动文件至其他目录

1
2
3
4
mv 001.txt ../ADirectory
svn add ../ADirectory/001.txt
svn delete 001.txt
svn commit -m "Move 001.txt to ADirectory"

3. 将svn服务器置于/opt目录下的注意事项

(1)必须以超级用户的身份(su或sudo)开启服务器
(2)普通用户身份可以提交新版本