SVN的使用

一、SVN简介

  SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

 

二、目录管理

  brunch: 多人开发一个项目时,存放每个人的分支代码,或从主干分支出来具有特殊功能的代码;

  tags: 一个项目肯定有不同的发布版本,当我们发布一个版本时,可以创建一个tags版本用来存放该发布的版本;

  trunk: 该目录里存放项目的主干代码。

 SVN的使用

 

三、客户端操作流程

  用户从SVN版本库通过网络“检出(Checkout)”到本地工作副本(Working Copy)中,在本地副本中进行增加、修改、删除等操作,完成后可“提交(Commit)”到版本库中,如果本地工作副本中版本较系统版本库过时,用户使用“更新(Update)”功能与系统上版本保持一致,具体流程图如下图所示。

SVN的使用

 

 

 

四、操作内容说明

1、  检出操作

  检出(Checkout)是把服务器相应文件夹的内容下载到本地,并建立本地与服务器的关联,然后可以在本地进行代码管理。要求本地放置代码的文件夹名称与服务器上相应文件夹名称一致。

SVN的使用

2、导入操作

       导入(Import)是把本地跟SVN无关联的文件夹加载到服务器的相应路径,并与服务器建立关联。导入文件夹时需要填写导入信息。

 SVN的使用

 SVN的使用

3、导出操作

       导出(Export)是把服务器最新版本代码或历史版本代码下载到本地某个路径,下载下来的代码是纯粹干净的代码,里面没有任何SVN残留的信息

 SVN的使用

SVN的使用

4、添加和删除操作

        添加(Add)是把本地关联文件夹里面未关联的内容转换为关联内容;删除(Delete)是把本地正常关联的内容转换为非关联内容。完成添加和删除操作后,需要进行“提交(Commit)”才能更新到服务器上。

 SVN的使用

 SVN的使用

5、检查修改操作

       检查修改(Check for modifications)是把提交前的文件修改、添加、删除、无版本控制等非常清晰的呈现出来。

 SVN的使用

 SVN的使用

6、还原操作

       还原(Revert)是把提交前的文件修改、添加、删除等改动恢复到原样,可以对文件夹操作、或对单个文件操作。

 SVN的使用

7、提交操作

      执行修改、添加、删除等操作后,为了使操作更新到服务器上,需要进行提交(Commit)操作。

 SVN的使用

 SVN的使用

8、更新操作

      团队编码时,更新是比较常用的操作,更新是把服务器最新的程序更新到本地,对已做修改、删除、添加等操作还未进行提交操作的文件不进行更新,把修改、删除、添加操作的文件进行还原、或把修改操作的文件直接删掉,然后便可更新

 SVN的使用

9、分支/标记(Branch/tag)

       分支/标记是把选中文件或文件夹内容复制到Branch或tags路径下面,新的路径下面的文件与原文件的关系可以很清晰的查看

 SVN的使用

 SVN的使用

10、合并(Merge)

      合并是把A文件的修改内容合并到B文件或把B文件的修改内容合并到A文件,便于代码在一个地方修改完毕后直接移到需要的地方,相互合并的文件必须是通过“分支/标记”操作生成的文件与母文件。合并只是把修改内容移到工作副本,提交之后才有效

 SVN的使用

 SVN的使用

五、代码管理

1. 代码路径结构

  每个项目的软件代码管理对应一个独立的总路径或总文件夹,下面分级存放不同的内容。基于SVN的代码管理文件夹结构示例如下图。

 SVN的使用

2. 代码操作规划

  2-1、为了代码管理安全、避免代码误操作,对相关软件工程师进行权限设置。参与该软件研发人员,开放“读写”全权限;参考借鉴该软件人员,只开放“读”权限;其他无需求人员,不开放权限。开发人员进行开发时,必须使用自己的账户登录,禁止使用他人账户进行SVN各项操作。

  2-2、新建项目路径、导入新的软件代码,按上述SVN基本操作进行即可。把SVN中已有代码移植到新的路径下面时,用Branch/tags指令进行操作,这样整个代码的脉络清晰。

  2-3、开发工作之前先更新代码,确认是在SVN服务器最新代码上修改提交;不要长时间检出项目不提交,减少因多人对同一个文件进行操作产生文件冲突;代码修改调试完毕后提交,必须书写清晰的标注;禁止提交软件编译产生的垃圾文件,避免别人在更新后可能与本地的环境产生冲突;不允许提交不能通过编译的代码;不允许提交自己不明白的代码。

 

上一篇:独家揭秘:阿里巴巴Zeus资源调度系统


下一篇:一分钟了解阿里云产品:阿里云RDS只读实例 分担数据库读写压力