SVN学习笔记(工作常见问题处理)

Posted 胖鹅68

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN学习笔记(工作常见问题处理)相关的知识,希望对你有一定的参考价值。

一、参考

  1. W3Cschool

二、SVN 介绍

Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目,同样是一个丰富的开发者和用户社区的一部分。

2.1 什么是版本控制系统(VCS)

版本控制系统 (VCS) 是一个软件,帮助软件开发人员团队工作并维持他们完整的工作历史。 下面是版本控制系统(VCS) 的目标:

  1. 允许开发者们同时工作

  2. 不会重写每个人的改变

  3. 维持每个版本的全部的历史

VCS 被分成两种:

  1. 集中版本控制系统 (CVCS) —— 代表:SVN
  2. 分散或不集中的版本控制系统 (DVCS) —— 代表:git

2.2 SVN版本控制的术语

  • 仓库:
    仓库是任何一个版本系统的核心,它是开发者们保存工作的总部,仓库不止处理文件还有历史记录,它需要访问网络,扮演服务器的角色,版本控制工具扮演客户端的角色,客户端可以连接仓库,那么他们就可以从仓库中存储或者提取。通过保存这些更改,一个客户端的更改可以被其他人检索到,一个客户端可以让其他人的更改作为一个工作副本。

  • 主干:
    trunk 是主要开发所在的目录,经常被项目开发者们查看。

  • 标签:tags
    目录用于储存项目中被命名的快照,标签操作允许给予对仓库中特定版本一个描述和一个难忘的名字。比如,LAST_STABLE_CODE_BEFORE_EMAIL_SUPPORT 比 Repository UUID: 7ceef8cb-3799-40dd-a067-c216ec2e5247 和Revision: 13 更令人难忘。

  • 分支:
    分支操作用于创建开发的另一条线,当你想把开发进程复制进两个不同的方向是很有用的。比如,当你发布 5.0 版本时,你可能想从 5.0 的 bug 修复中分离出来创建一个开发 6.0 功能的分支。

  • 工作副本:
    工作副本是仓库的一个快照。这个仓库被所有的成员共享,但人们不直接修改它,相反每个开发者检查这个工作副本,工作副本是一个私人的工作空间,这里开发者可以独立于其他成员做自己的工作。

  • 提交更改:
    提交是一个保存更改的过程,从私人工作空间到中央服务器。提交后,更改对全部成员可用,通过更新工作副本其他开发者提取这些更改。提交是一个原子操作,要么全部提交成功要么回滚,用户绝不会看到一半完成提交。

三、 工作场景

3.1 管理

3.1.1 分支命名:

BR_产品型号_版本号_国家英文名称_运营商

3.1.2 SVN 有三个标记:

  1. trunk 这个是主线,永远都只有一套代码

  2. ags 每次发布版本就需要在这里“打标签”,必须与提交测试部的代码一致,是坚决不能改的,即使知道有“问题”也不能改,是为了保持版本的一致性

  3. branch 这个是分支,一般项目经理会告诉对应的CMO从主线或者是某个标签中拉出一条基线,作为某个“定制产品”,项目经理知道哪个版本是比较稳定的,在以后发布的版本中还是要放入到tags 标签中
    从基线拉出的版本一般是不改版本号的(不允许修改),让使用者能够明确当前基线是在哪个版本中拉出来的,明确主线的树形结构。

3.2 多个人同时出现操作同一个文件的时候就容易产生冲突,解决办法

1、每次在上传文件到SVN上时,先在本地把自己的文件更新一遍,然后再比较有差异的文件

2、SVN在上传文件的时候,要注意文件名称的大小写,这个可能与操作系统有关系,所以尽量保持名称的一致性

3、SVN出现冲突的粒度——只有当多个人修改同一行代码的时候才会出现冲突,这个时候SVN会提示你产生冲突,并会产生最近修改版本、你修改的代码、还有别人修改代码 三个文件,这个把自己的代码综合到最近修改的代码中

4、将本地的修改代码备份,然后将修改的代码全部删除,update服务器最新的代码,然后比较备份的代码。(终极必杀)

四、SVN 冲突是在同一行(实验)?

4.1 实验过程:

4.1.1 文本文件管理

从SVN中下载下了一个txt文件,A修改了文件的开头,B修改了文件的结尾,A先提交,操作没有问题,B再次提交,显示冲突。B直接更新(update)文件文件,任然保留自己添加的东西,再次提交,正常

4.1.2 二进制文件管理

从SVN中下载了一个xlxs文件,A修改了一个地方,B修改了另外的一个地方,A先提交,操作没有任何问题,B更新xlxs文件,提交任然出现冲突

4.2 结论:

  1. SVN对文本更新只要不在同一行修改,更新之后提交是不冲突的;
  2. 但是如果不是文本文件,即使更新之后还是出现冲突的现象

五、常见问题

5.1 SVN地址命名的问题

一般访问到具体的计算机使用的是 —— IP+PORT+目录

例如访问SVN的地址——https://169.37.7.203:443/svn/xjyh

问题描述:
如果开发环境不是很稳定经常需要更换IP地址或者是服务器位置切换导致ip地址更换,已经修改好的内容提交到服务器是不行的,因为SVN记录的IP还是之前的,没有办法修改IP的路径,每次都要重新指定IP重服务器上下载,因此这个是很麻烦的事情

解决办法:
在局域网中通过计算机名称定位到具体的服务器,这样每次更换IP地址还是不影响SVN访问的地址。

例如访问的svn地址——https://huangbiao:443/svn/xjyh (huangbiao为计算机名)

5.2 服务器IP地址发生了变化

如果服务器迁移导致SVN地址发生变化

问题描述:
如果重新下载SVN文件比较耗时间,而且代码目录结构都没有变化,浪费本地磁盘空间

解决办法:
在windows下以TortoiseSVN为例,在仓库文件夹上右键,TortoiseSVN-(重新定位)relocate,

5.3 删除SVN缓存本地的账号

  1. 客户端删除
    Settings -> Saved Data -> Authentication Data -> clear


  1. 删除本地文件
    将C:\\Documents and Settings\\Administrator\\Application Data\\Subversion\\auth\\svn.simple目录下的已保存登录用户信息文件进行删除

以上是关于SVN学习笔记(工作常见问题处理)的主要内容,如果未能解决你的问题,请参考以下文章

svn学习笔记4(进阶应用)

[学习笔记]坚果云网盘,SVN异地代码管理

SVN学习笔记二——客户端使用

Unity学习笔记--如何在Unity运行cmd?并且在Unity中利用cmd操作svn(例如生成svn--diff文件)

Git学习笔记

SVN学习笔记三——钩子的应用