SVN是subversion的缩写,是一个开放源代码的版本控制系统。
通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
SVN是一种技术性更加安全的产品,的实现了系统和控制两方面的结合。一方面可以将系统整体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统能够互补,最终在系统整体性的安全性得以保障,通过均衡原则实现最终追求安全的目的。
优点:
1、管理方便,逻辑明确,符合一般人思维习惯。
2、易于管理,集中式服务器更能保证安全性。
3、代码一致性非常高。
4、适合开发人数不多的项目开发。
缺点:
1、服务器压力太大,数据库容量暴增。
2、如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。
3、不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。
CSDN上有个博客写得挺细的,可以参考一下。
链接: https://blog.csdn.net/zengsange/article/details/80618301.
svn co URL用于检出代码
例子:
svn co https://172.16.89.210/test
svn up 用于日常更新,直接在svn主目录或者子目录执行
例子:
svn up
svn ci 用于日常提交
例子:
svn ci -m “xxx”
svn diff 用于日常对比,看看自己的修改
例子:
svn diff -c 111 a.txt
可以看111版本 a.txt文件的修改。
svn st 查看当前文件状态,A是新增,D是删除,!是丢失,M是修改,?是未纳入版本控制。
例如:
svn st -q
查看已经纳入版本控制的的文件。
svn cp 用于创建分支
例子:
svn cp -r 55222 https://172.16.89.210/svn/rdgroup-a https://172.16.89.210/svn/rdgroup-a-branches-R55222 -m"从55222创建分支,在此版本基础上xxx"
svn merge 用于分支合并到主分支
例子:
svn merge https://172.16.89.204/svn/rdgroup-a-branches-R45403
合并分支后,分支已经无用,删除直接用svn rm 目录名 --force
svn log -v -l 5
查看当前目录最新5个版本修改日志,并列出修改的文件名
svn add 用于未纳入版本控制的文件加入版本控制,注意使用了add命令需要提交才能同步到svn服务器
例如:
svn add * --force
svn ci -m "新增当前目录下的文件,包括子目录"
把当前目录以及在这里插入代码片子目录的所有文件都纳入版本控制
svn rm 用于svn版本控制的文件删除,注意这里的删除需要提交,用svn st -q可以看到D状态的文件,提交即可同步到svn服务器,这样其他人更新就是删除了。
例子:
svn rm a.txt
svn ci -m "删除svn服务器的a.txt"
利用svn属性宏来管理版本,修改这个文件并提交,svn会自动修改版本宏
Version文件内容参考
$Rev: 55759 $
$URL: https://172.16.89.210/svn/firmware/doc/Version $
I d : V e r s i o n 557592021 − 08 − 2609 : 37 : 15 Z x x x Id: Version 55759 2021-08-26 09:37:15Z xxx Id:Version557592021−08−2609:37:15Zxxx
还有就是不用Version文件,代码头文件属性设置为和Version一样,代码里面使使用版本宏的方法
例子
#define SVN_VERSION "$Rev: 47052 $"