Centos7 SVN搭建

介绍

        Subversion(SVN)是一个开源的版本控制系统,也就是说Subversion管理着随时间改变的数据。
        这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样您就可以把档案恢复到旧版本,或浏览文件的变动历史。repository
(源代码库):源代码统一存放的地方
Checkout(提取):当您手上没有源代码时,您需要从库中检出一份源代码
提交(提交):如果您已经修改了代码,您需要提交到存储库
更新(更新):当您已经结账了一份源代码,更新一下,您就可以与储存库上的源代码同步,手上您的代码就会有最新的变更
日常开发过程其实就是这样的(假设您已经结帐并且已经工作了几天):更新(获得最新的代码) - >作出自己的修改并调试成功 - > Commit(大家就可以看到您的修改 了)。
        如果您与同事同时修改了同一个文件,SVN可以合并你们的改动,实际上SVN管理源代码是以行为单位的,就是说你们只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN会提示文件Confict(冲突),需要手动确认。


系统环境:

[root @ ecs-4082〜]#cat / etc / redhat-release 
CentOS Linux版本7.3.1611(核心) 
[root @ ecs-4082〜]#ip add
1:lo:<LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue状态UNKNOWN qlen 1
    链接/回放00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       永久的永久preferred_lft valid_lft
    inet6 :: 1/128作用域主机 
       永久的永久preferred_lft valid_lft
2:eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast状态UP qlen 1000
    link / ether fa:16:3e:8f:9b:37 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.10/24 brd 192.168.2.255范围全局动态eth0
       valid_lft 62622sec preferred_lft 62622sec
    inet6 fe80 :: f816:3eff:fe8f:9b37 / 64范围链接 
       永久的永久preferred_lft valid_lft

一,安装SVN服务器

[root @ ecs-4082〜]#yum install subversion -y

二,查看SVN版本

[root @ ecs-4082〜]#svnserve --version
svnserve,版本1.7.14(r1542130)
   2017年8月23日20:43:38编译


版权(C)2013 Apache软件基金会。
这个软件由许多人的贡献组成; 请参阅通知
文件以获取更多信息。
Subversion是开源软件,请参阅http://subversion.apache.org/


以下存储库后端(FS)模块可用:


* fs_base:用于使用Berkeley DB存储库的模块。
* fs_fs:用于处理纯文件(FSFS)存储库的模块。


赛勒斯SASL认证可用。

三,创建版本库

1,创建目录
[root @ ecs-4082〜]#mkdir / var / svn
2,切换到刚创建好的目录,创建版本库
[root @ ecs-4082〜]#cd / var / svn /
[root @ ecs-4082 svn]#svnadmin create / var / svn / svnrepos
3,切换目录,查看自动生成的版本库文件
[root @ ecs-4082 svn]#cd svnrepos
[root @ ecs-4082 svnrepos]#ll
共24个
drwxr-xr-x 2 root root 4096 Mar 11 14:12 conf
drwxr-sr-x 6 root root 4096 Mar 11 14:12 db
-r  -  r  -  r  -  1 root root 2 Mar 11 14:12格式
drwxr-xr-x 2 root root 4096 Mar 11 14:12 hooks
drwxr-xr-x 2 root root 4096 Mar 11 14:12锁定
-rw-r  -  r-- 1 root root 229 Mar 11 14:12 README.txt
Subversion目录说明:
db目录:所有版本控制的数据存放文件(文件存储位置)
。hooks目录:放置hook脚本文件的目录
。lock目录:用来追踪存取文件库的客户端。format
文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。conf
目录:是这个仓库的配置文件(仓库的用户访问账号,权限等)。
如图4所示,切换进入CONF目录(是SVN版本库配置文件),查看
[root @ ecs-4082 svnrepos]#cd conf /
[root @ ecs-4082 conf]#ll
共12个
-rw-r  -  r-- 1 root root 1080 Mar 11 14:12 authz
-rw-r  -  r-- 1 root root 309 Mar 11 14:12 passwd
-rw-r  -  r-- 1 root root 3090 Mar 11 14:12 svnserve.conf
authz:是权限控制文件
。passwd:是账号密码文件
。svnserve.conf:SVN服务配置文件。
5,创建账号密码,这里创建两个测试用户
[root @ ecs-4082 conf]#vim passwd 

Esc键退出编辑模式在[用户]中中添加用户账号和密码,格式:账号=密码,比如示例中的suzhan = redhat(注意等号两端要有一个空格)。
按Esc键退出编辑模式,并输入:wq保存并退出。

如图6所示,在AuthZ的文件,设置用户权限
[root @ ecs-4082 conf]#vim authz
按i键进入编辑模式。
在末尾添加如下代码(其中,r表示读,w表示写)
按Esc键退出编辑模式,并输入:wq保存并退出。


7,修改svnserver.conf文件
[root @ ecs-4082 conf]#vim svnserve.conf
按下I键进入编辑模式。
打开以下几个注释(注意每行不能以空格开始,等号两端要有一个空格):
anon-access = read#匿名用户可读,您也可以设置anon-access =没有,允许匿名用户访问。设置为无,可以使日志日期正常显示
auth-access = write#授权用户可写
password-db = passwd#使用哪个文件作为账号文件
authz-db = authz#使用哪个文件作为权限文件
realm = / var / svn / svnrepos#认证空间名,版本库所在目录
按Esc键退出编辑模式,并输入:wq保存并退出。


四,启动SVN版本库,查看进程存在就表示开启。需要终止可以使用kill -9 +进程号
[root @ ecs-4082 conf]#svnserve -d -r / var / svn / svnrepos /
[root @ ecs-4082 conf]#ps -ef | grep svn
根50245 1 0 14:40?00:00:00 svnserve -d -r / var / svn / svnrepos /
root      50257  47795  0 14:40 pts/0    00:00:00 grep --color=auto svn
也可以查看SVN服务的默认端口是TCP:3690是否启动
[root@ecs-4082 conf]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      50245/svnserve      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1455/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1099/master         
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      1102/java           
tcp6       0      0 :::22                   :::*                    LISTEN      1455/sshd           
tcp6 0 0 :: 1:25 ::: * LISTEN 1099 / master  

的Windows客户端测试连接

一,安装客户端

1,根据系统版本先到官网下载客户端和语言包:HTTPS:?//tortoisesvn.net/downloads.html SPM = a2c4g.11186623.2.10.Id9CJW


二,连接SVN服务器
1,在您的本地项目文件夹中(如示例中的C:\ svntest),右键空白处弹出菜单,选择SVN检出。


2,指定资源库URL,格式为svn://内网IP或者网IP /资源库名;指定检出至目录;再单击确定。


3,如图显示检出成功。


三,创建并提交文件的.svn客户端每次创建文件都会在本地保存一份副本在隐藏文件.svn文件里面,所以占用本地存储双倍存储空间
1,创建文件,可以查看到隐藏文件夹


2,在项目文件空白处单击右键,选择SVN提交


扫描二维码关注公众号,回复: 1656083 查看本文章

3,提交SVN服务器资源库,覆盖掉资源库项目从而实现更新。 (注意:如果发生提交冲突,即两人都提交修改,后提交者由于版本落后会提交失败这时可以先备份自己的项目,从服务端下载最新的项目后,再将自己的项目覆盖到。本地项目文件夹,最后SVN提交即可成功提交。)


四,获取更新,如果别人修改了SVN服务端资源库上的项目,您想下载最新的项目,则在本机项目文件空白处单击右键,选择SVN更新,即可自动完成下载,并会提示所作的更新有哪些。
五,恢复删除数据。
如图1所示,先删除原先数据并选择提交


2,在客户端工具,TortoiseSVN-显示日志


3,恢复到指定版本数据


4,这次演示的SVN服务器存储文件路径
[root @ ecs-4082 revs]#du -sh * 
372M 	0
[root @ ecs-4082 revs]#pwd
在/ var / SVN / svnrepos / DB /转速

六,删除SVN客户端数据和SVN服务器数据

如图1所示,先在客户端使用用户svnuser1上传60兆左右的测试压缩包


2,使用其他用户svnuser2登录能正常更新到刚提交的测试压缩包


3,使用用户svnuser1目录删除测试压缩包之后选择提交更新


如图4所示,使用用户svnuser2更新,也可以看到已经删除文件


5,但是在SVN服务器上查看,还存在记录(在版本2查看文件大小)

[root @ ecs-4082 0]#pwd
的/ var / SVN / svnrepos /分贝/转/ 0
[root @ ecs-4082 0]#du -sh *
4.0K 	0
4.0K 	1
69M 	2
4.0K 	3

6,删除SVN服务器文件,要同时删除:在/ var / SVN / svnrepos /分贝/转/ 0和/变种/ SVN / svnrepos /分贝/的revprops / 0这两个目录下的相同版本才可以

[root @ ecs-4082 0]#cd  - 
的/ var / SVN / svnrepos /分贝/的revprops / 0
[root @ ecs-4082 0]#cd  - 
的/ var / SVN / svnrepos /分贝/转/ 0

如图7所示,这里演示删除包含压缩包文件的版本2

[root @ ecs-4082 0]#cd  - 
的/ var / SVN / svnrepos /分贝/转/ 0
[root @ ecs-4082 0]#ll
总计70624
-r  -  r  -  r  -  1 root root 115 Mar 11 21:51 0
-r  -  r  -  r  -  1 root root 424 Mar 11 21:55 1
-r  -  r  -  r  -  1 root root 72228771 Mar 11 21:58 2
-r  -  r  -  r  -  1 root root 242 Mar 11 22:02 3
[root @ ecs-4082 0]#rm -rf 2
[root @ ecs-4082 0]#ll
共12个
-r  -  r  -  r  -  1 root root 115 Mar 11 21:51 0
-r  -  r  -  r  -  1 root root 424 Mar 11 21:55 1
-r  -  r  -  r  -  1 root root 242 Mar 11 22:02 3
[root @ ecs-4082 0]#cd  - 
的/ var / SVN / svnrepos /分贝/的revprops / 0
[root @ ecs-4082 0]#ll
共16个
-r  -  r  -  r  -  1 root root 50 Mar 11 21:51 0
-r  -  r  -  r  -  1 root root 96 Mar 11 21:55 1
-r  -  r  -  r  -  1 root root 96 Mar 11 21:58 2
-r  -  r  -  r  -  1 root root 96 Mar 11 22:02 3
[root @ ecs-4082 0]#rm -rf 2
[root @ ecs-4082 0]#ll
共12个
-r  -  r  -  r  -  1 root root 50 Mar 11 21:51 0
-r  -  r  -  r  -  1 root root 96 Mar 11 21:55 1
-r  -  r  -  r  -  1 root root 96 Mar 11 22:02 3

8,查看日志信息已经显示删除,不可逆恢复操作


9,

猜你喜欢

转载自blog.csdn.net/tladagio/article/details/79494059