转自:http://blog.csdn.net/windone0109/article/details/4857044
版本冲突原因:
假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns.txt文件的版本号已经变成101了。同时B用户在版本号为100的kingtuns.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的101版本上作的修改,所以导致提交失败。
版本冲突现象:
冲突发生时,subversion会在当前工作目录中保存所有的目标文件版本[上次更新版本、当前获取的版本(即别人提交的版本)、自己更新的版本、目标文件]。
假设文件名是kingtuns.txt
对应的文件名分别是:
kingtuns.txt.r101
kingtuns.txt.r102
kingtuns.txt.mine
kingtuns.txt。同时在目标文件中标记来自不同用户的更改。
版本冲突解决:
场景:
1、现在A、B两个用户都更新kingtuns.txt文件到本地。
2、文档中原始文件内容如下:
3、A用户修改文件,添加内容“A用户修改内容”完成后提交到服务器
4、B用户修改文件,添加内容“B用户修改内容”完成后提交到服务器
B用户提交更新至服务器时提示如下:
B用户将文件提交至服务器时,提示版本过期:首先应该从版本库更新版本,然后去解决冲突,冲突解决后要执行svn resolved(解决),然后在签入到版本库。在冲突解决之后,需要使用svn resolved(解决)来告诉subversion冲突解决,这样才能提交更新。
解决冲突有三种选择:
A、放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决)
B、放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。
C、手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。
解决步骤如下:
1、 在当前目录下执行“update”(更新)操作
2、 在冲突的文件上(选中文件--右键菜单—TortoiseSVN—Edit conflicts(解决冲突)),出现如下窗口
Theirs窗口为服务器上当前最新版本
Mine窗口为本地修改后的版本
Merged窗口为合并后的文件内容显示
3、 如果要使用服务器版本,在Theirs窗口选中差异内容,右键,选择Use this text block(使用这段文本块)。
同理如果要使用本地版本,在协商后,在Mine窗口右键,选择Use this text block(使用这段文本块)。
4、 修改完成后,保存kingtuns.txt文件内容。
5、 在B用户的冲突目录下,选中文件--右键菜单—TortoiseSVN—Resolved(解决)。会列出冲突的文件列表,如果确认已经解决,点OK。
6、 冲突解决
7、提交解决冲突后的文件。
如何降低冲突解决的复杂度:
1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。
2、在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘
3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。
相关推荐
svn 在 Linux 下的使用(svn 命令) svn 是一个版本控制系统,允许多人合作开发项目,追踪文件的变化历史记录,避免文件冲突和丢失。下面介绍 svn 在 Linux 下的使用和常用命令。 1. 将文件 checkout 到本地目录 ...
完成后,使用`svn resolved`命令标记冲突已解决。 4. **冲突工具**: SVN提供了一些冲突解决工具,如`svn resolve --accept`选项,可快速选择接受某个版本的冲突解决方案。 **图解示例** 文档中的`svn merge功能...
### Linux下SVN命令使用大全 #### 一、概述 Subversion (SVN) 是一款开源版本控制系统,广泛应用于软件开发和其他需要版本控制管理的领域。在Linux环境下使用SVN,能够有效地帮助开发者管理和协作代码。本文档将...
在了解了打基线的基本概念之后,接下来详细介绍一些常用的SVN命令,这些命令可以帮助我们在SVN中有效地进行打基线操作。 ##### 1. 创建标签(tag) 创建标签是一种非常简单的方式,可以用来记录项目的一个快照。...
如果文件已经被标记为已解决,但仍然存在冲突,你可以使用svn revert命令撤销所有冲突解决工作,回到冲突未解决的状态,然后重新开始冲突解决过程。 最后,总结一下解决SVN冲突的步骤: - 预测潜在冲突,使用svn ...
### SVN命令使用手册知识点详解 #### 一、SVN简介 Subversion (SVN) 是一种广泛使用的开源版本控制系统,用于软件开发和其他需要版本控制的领域。它支持多个用户对同一组文件进行编辑,同时还能追踪每一次修改的...
- 当文件出现冲突时,通过手动解决后使用此命令来通知 SVN 该文件已解决冲突。 #### 十八、Cat (显示文件内容) **命令格式**: ``` svn cat [文件] [@版本号] ``` **示例**: ``` svn cat -r PREV filename > ...
然后,使用`svn resolved file1.txt`命令告诉SVN冲突已解决。 - 最后,用户A或B可以再次提交更改,确保在提交前使用`svn diff file1.txt`检查文件是否正确合并。如果一切正常,可以执行`svn commit -m "Resolved ...
下面将详细解析从给定文件中提取的关键SVN命令及其功能,这将帮助你在Linux系统中更有效地管理和操作SVN仓库。 ### 1. 检出 (Checkout) `svn checkout path path` 命令用于从SVN仓库检出项目到本地目录。例如,`...
4. 解决冲突后,使用`svn resolved`标记冲突已解决。 5. 最后,提交解决后的更改到版本库。 在处理目录丢失问题时,可以通过以下步骤恢复: 1. 执行`svn checkout`重新检出丢失的目录。 2. 如果目录下的子文件也...
3. **放弃合并**:如果发现冲突无法解决,可以使用`svn revert`命令取消合并,然后再尝试其他策略。 ### 冲突预防策略 1. **频繁合并**:避免长时间不合并,尽量保持分支和主干的同步,可以减少合并时的冲突。 2. ...
`svn status -u`命令可以检查潜在的冲突,而`svn update`会显示冲突信息,如U表示文件已更新,G表示已合并更新,C表示存在冲突。 解决冲突时,Subversion会在冲突文件上标记,并提供`.mine`、`.rOLDREV`和`.rNEWREV...
以下是一些使用频率最高的SVN命令,确保你能快速上手并有效地利用SVN进行项目管理。 1. **初始化仓库(Create Repository)** 使用`svnadmin create`命令创建一个新的SVN仓库。例如: ``` svnadmin create /path...
在使用SVN进行项目管理时,掌握一些常用的SVN命令是非常必要的。以下是一些核心的SVN命令及其详细解释: 1. **初始化仓库(svnadmin create)**: 在一个新的目录下创建一个SVN仓库,这将生成一个包含所有必需文件...
#### 二、SVN命令详解 ##### 1. 取消Add/Delete 当用户在SVN仓库中对文件或目录进行了添加(add)或删除(delete)操作但还未提交(commit)时,可以通过以下命令取消这些操作: - **取消文件**:`svn revert 文件名` -...
通过svn命令,用户可以实现对代码库的多种操作,包括检出、添加、提交、更新、查看状态、删除、查看日志、比较差异、合并版本等。以下是对这些常见svn命令的详细解释: 1. **检出(Checkout)**: `svn checkout` 或 `...
SVN常用命令集合及简单用法 SVN(Subversion)是一种版本控制系统,用于管理代码、文档、图片等文件的版本变更。下面是常用的 SVN 命令集合及简单...这些命令将帮助您更好地使用 SVN,提高工作效率和合作开发的效果。
解决版本冲突需要使用 SVN resolved 命令来告诉 Subversion 冲突已经解决。解决步骤如下: 1. 在当前目录下执行“update”(更新)操作 2. 在冲突的文件上(选中文件--右键菜单—TortoiseSVN—Edit conflicts(解决...
以下是对标题和描述中涉及的svn命令的详细解释: 1. **Checkout(检出)** `svn checkout` 或 `svn co` 用于从远程仓库下载项目到本地工作目录,例如: ``` svn checkout svn://192.168.1.1/pro/domain ``` 2....