1、SVN
什么是svn
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的
SVN的一些概念
名称 | 含义 |
---|---|
repository(源代码库) | 源代码统一存放的地方 |
Checkout(提取) | 当你手上没有源代码的时候,你需要从repository checkout一份 |
Commit(提交) | 当你已经修改了代码,你就需要Commit到repository |
Update (更新) | 当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更 |
SVN的主要功能
-
目录版本控制
CVS 只能跟踪单个文件的历史, 不过 Subversion 实作了一个 “虚拟” 的版本控管文件系统, 能够依时间跟踪整个目录的变动。 目录和文件都能进行版本控制。 -
真实的版本历史
自从CVS限制了文件的版本记录,CVS并不支持那些可能发生在文件上,但会影响所在目录内容的操作,如同复制和重命名。除此之外,在CVS里你不能用拥有同样名字但是没有继承老版本历史或者根本没有关系的文件替换一个已经纳入系统的文件。在Subversion中,你可以增加(add)、删除(delete)、复制(copy)和重命名(rename),无论是文件还是目录。所有的新加的文件都从一个新的、干净的版本开始。 -
自动提交
一个提交动作,不是全部更新到了档案库中,就是不完全更新。这允许开发人员以逻辑区间建立并提交变动,以防止当部分提交成功时出现的问题。 -
纳入版本控管的元数据
每一个文件与目录都附有一組属性关键字并和属性值相关联。你可以创建, 并儲存任何你想要的Key/Value对。 属性是随着时间来作版本控管的,就像文件內容一样。
流程
首先从svn上下载项目代码,
进入到自己的分支,进行开发工作(提交、查看)
下发,把分支合并到主干上。
缺点
由于每一次提交都需要保留原始副本,数据库容量很大。
连接不上服务器,基本就不能正常工作了。
不适合开源系统开发
优点
管理方便,逻辑清晰
易于管理,集中式svn服务器更能保证数据安全性。
代码一致性非常高。
适合开发人数不多的项目。
普及度高。
2、 安装svn
[root@localhost svn]# yum -y install subversion
3、创建相应目录并配置
mkdir -p /data/svn/repo
svnadmin create /data/svn/repo
//执行上面的命令后,自动建立repo测试库,查看/data/svn/repo 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。
用户名和密码配置
[root@localhost password]# cd /data/svn/repo/conf
[root@admin conf]# vim passwd
[users]
# harry = harryssecret
# sally = sallyssecret
admin=123456
权限控制
//文章末尾添加
[root@admin conf]# vi authz
[/]
admin=rw
配置服务
[root@admin conf]# vim svnserve.conf
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=My First Repository
启动服务
svnserve -d -r /data/svn/repo --listen-port=3690
[root@localhost conf]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:3690 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
win客户端
桌面右键SVN checkout,上面是服务器的地址 下面是保存到本机的地址,然后点击🆗即可
这里的密码和账号就是配置文件/data/svn/repo/conf/passwd中所设置的。
右键TortoiseSVN—repo-browser