CentOS7搭建SVN及基本使用

SVN的全称是subversion是一个开放源代码的版本控制系统。

本博文讲解如何在CentOS7下安装svn、配置多个项目版本库以及如何通过命令和TortoiseSVN来使用svn。

 

1. 安装svn服务

# yum install -y subversion

验证版本

# svn --version

2.创建版本库

subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置,这里暂时不改默认目录。

分别创建pro1和pro2两个项目的SVN版本库

# svnadmin create /var/svn/pro1
# svnadmin create /var/svn/pro2

分别查看项目目录内容

# ls /var/svn/pro1
# ls /var/svn/pro2

看到如下三个文件

passwd:记录用户和对应密码
authz:配置用户或用户组对应的各文件夹权限的
svnserve.conf:针对本工程用到的passwd、authz的配置文件

3.设置svn开机自启动

# systemctl enable svnserve.service

4.设置防火墙和SELINUX

允许访问3690端口

# firewall-cmd --zone=public --add-port=3690/tcp --permanent
# firewall-cmd --reload

关闭SELINUX

# nano /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
重启生效
# reboot

5.配置SVN

将任一个工程的conf目录复制到SVN数据根目录

# cp -r /var/svn/pro1/conf /var/svn

分别清空项目版本库conf目录内容

# rm -f /var/svn/pro1/conf/*
# rm -f /var/svn/pro2/conf/*

进入/var/svn/conf目录

# cd /var/svn/conf

配置passwd

# nano passwd

添加用户名及密码,格式: 用户名 = 密码 

[users]
# harry = harryssecret
# sally = sallyssecret
user1 = user1
user2 = user2
user3 = user3
user4 = user4
user5 = user5
user6 = user6

 配置authz

# nano authz

配置用户及相关权限 ,user1、user2属于project1组,user3、user4属于project2组,user5、user6属于guest组,

project1组拥有pro1的rw(读写)权限,project2组拥有pro2的rw(读写)权限,guest组对pro1和pro2只有读的权限。

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
project1 = user1,user2
project2 = user3,user4
guest = user5,user6

[pro1:/]
@project1 = rw
@guest = r

[pro2:/]
@project2 = rw
@guest = r

配置svnserve.conf

# nano svnserve.conf

配置匿名权限(annon-access)设置为none,即没有任何权限;

授权权限设置为write拥有写权限;

指定密码文件位置和授权文件位置;

realm为权限授权域所有的版本库使用相同的realm值,这样,对版本库的密码缓存可以在多个版本库之间共享。

anon-access = none
auth-access = write
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm = /var/svn

注意:找到对应的行,去掉行首的#,行首不能留有空格,修改对应值。

分发svnserve.conf到各个项目的conf目录

# cp /var/svn/conf/svnserve.conf /var/svn/pro1/conf
# cp /var/svn/conf/svnserve.conf /var/svn/pro2/conf

 删除/var/svn/conf目录下的svnserve.conf

# rm -f /var/svn/conf/svnserve.conf

6.启动svn

# systemctl start svnserve

 

7.客户端访问svn

7.1 命令行访问

创建并进入测试目录

# mkdir -p /root/test/test1
# cd /root/test/test1

 checkout 项目pro1到当前目录

# svn checkout svn://192.168.134.131/pro1 ./

注意:ip地址注意修改成自己服务器ip

 查看目录下生成了.svn目录

# ll -a pro1
total 20
drwxr-xr-x 3 root root    34 Mar  6 18:49 .
drwxr-xr-x 4 root root    32 Mar  6 18:46 ..
drwxr-xr-x 4 root root    75 Mar  6 18:49 .svn

新建一个文件

# cd pro1
# nano hello.txt
内容为
hello world

添加文件到svn

# svn add hello.txt
A         hello.txt

 提交文件到svn

# svn commit -m "first commit" hello.txt 

查看svn

# svn list svn://192.168.134.131/pro1
按提示输入用户名及密码
hello.txt

如果有其他项目成员更新了svn文件,只需要执行update命令即可

# svn update

 

7.2 TortoiseSVN

Windows下安装好TortoiseSVN

在任意目录下,新建一个test文件夹,进入test文件夹,在空白处右键-->SVN Checkout

输入svn地址

点击OK-->OK,看到如下页面

 

修改hello.txt的内容,保存后,可看到hello.txt图标添加了红色感叹号,说明文件已经变化,通过右键空白处-->SVN Commit来提交文件到svn服务器

8.冲突及解决冲突

团队协作不可避免的产生冲突,冲突产生的原因是在同一时间多个用户对同一文件的相同位置进行修改。

8.1产生冲突

例如:user1 和 user2 同时对hello.txt同一位置进行修改,user2先提交,可以提交成功,文件版本号+1,当user1后来提交时将报错:文件已过时(out of date),因为user1的版本号小于服务器最小版本号

8.2解决冲突

user先update更新到最新版本,右键 空白处-->SVN update

多出如下三个文件

hello.txt.mine:自己的内容

111
222user1upd
333
444
555
666

hello.txt.r4:原来svn服务器内容

111
222
333
444
555
666

hello.txt.r5最近服务器内容

111
222user2upd
333
444
555
666

hello.txt内容

111
<<<<<<< .mine
222user1upd
||||||| .r4
222
=======
222user2upd
>>>>>>> .r5
333
444
555
666

修改hello.txt 解决冲突,解决冲突需要人工判断是保留哪些内容,例如user1和user2的修改都保留,修改后内容如下:

111
222user1upd
222user2upd
333
444
555
666

保存 !

删除产生的三个文件

hello.txt.mine、hello.txt.r4、hello.txt.r5

user1再次svn commit提交hello.txt到svn服务器,提交成功,版本号+1

 

完成! enjoy it!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值