SVN学习笔记(工作常见问题处理)
Posted 胖鹅68
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN学习笔记(工作常见问题处理)相关的知识,希望对你有一定的参考价值。
文章目录
一、参考
二、SVN 介绍
Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目
,同样是一个丰富的开发者和用户社区的一部分。
2.1 什么是版本控制系统(VCS)
版本控制系统 (VCS) 是一个软件,帮助软件开发人员团队工作并维持他们完整的工作历史。 下面是版本控制系统(VCS) 的目标:
-
允许开发者们同时工作
-
不会重写每个人的改变
-
维持每个版本的全部的历史
VCS 被分成两种:
- 集中版本控制系统 (CVCS) —— 代表:SVN
- 分散或不集中的版本控制系统 (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 有三个标记:
-
trunk 这个是主线,永远都只有一套代码
-
ags 每次发布版本就需要在这里“打标签”,
必须与提交测试部的代码一致,是坚决不能改的,即使知道有“问题”也不能改,是为了保持版本的一致性
-
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 结论:
SVN对文本更新只要不在同一行修改,更新之后提交是不冲突的;
但是如果不是文本文件,即使更新之后还是出现冲突的现象
五、常见问题
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缓存本地的账号
- 客户端删除
Settings -> Saved Data -> Authentication Data -> clear
- 删除本地文件
将C:\\Documents and Settings\\Administrator\\Application Data\\Subversion\\auth\\svn.simple目录下的已保存登录用户信息文件进行删除
以上是关于SVN学习笔记(工作常见问题处理)的主要内容,如果未能解决你的问题,请参考以下文章
Unity学习笔记--如何在Unity运行cmd?并且在Unity中利用cmd操作svn(例如生成svn--diff文件)