SVN介绍

SVN简介

它是什么

SVN是Subversion的简称,是一个开放源代码的版本控制系统,和git(分布式版本控制)比它采用了集中式版本控制,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。它管理者很多数据,这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

几个概念

  • repository(源代码库):源代码统一存放的地方
  • Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
  • Commit(提交):当你已经修改了代码,你就需要Commit到repository
  • Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更
  • Merge (合并): 当你有多个分支时,一般需要从trunk合并到分支,或分支合并到主干
  • Trunk (主分支): 主分支
  • Branches (分支): 分支,开发一般需要新建一个branch,最后将代码合并到Trunk

与git比较

git也是一个开源的分布式版本控制系统,是目前世界上最先进的分布式版本控制系统。相比较git有以下优势:

  • git是分布式的,svn是集中式的。(最核心)
  • git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢复。(核心)
  • git可离线完成大部分操作,svn则不能
  • git分支和合并更强大
  • git有着更强的撤销修改和修改历史版本的能力
  • git速度更快,效率更高。

唯一弱点,Git 没有严格的权限管理控制,一般通过系统设置文件读写权限的方式来做权限控制。不过git的发展伴随着开源的发展,与github是亲兄弟。

常用命令

创建分支


svn cp -m "my new branch" http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001

删除分支或tags


svn rm http://svn_server/xxx_repository/branches/br_feature001

svn rm http://svn_server/xxx_repository/tags/release-1.0

checkout 到工作目录


svn co http://svn_server/xxx_repository/branches/br_feature001

从主干合并到分支(主干更新后,想要拉取到我的分支)


cd br_feature001

svn merge http://svn_server/xxx_repository/trunk

合并分支到主干(分支开发完毕后,需要合并到分支)


cd trunk

svn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001