SVN版本冲突解决详解

一、前言 解决版本冲突的命令。在冲突解决之后,需要使用svnresolved来告诉subversion冲突解决,这样才能提交更新。冲突发生时,subversion会在WorkCopy中保存所有的目标文件版本(上次更新版本、当前获取的版本,即别人提交的版本、自己更新的版本、目标文件。 开发人员都知道代码管理工具是开发中一个必不可少的工具,这里也不废话详细介绍了。不管你个人喜欢git还是svn还是其他,但还有一大部分公司在使用svn做代码管理工具。这里详细介绍下SVN提交文件时冲突问题的解决方式。 二、问题现象 假设A、B两个用户,他们分别从svn服务器中检出了test1.txt文件,此时A、B、服务器三个地方的test1.txt的版本都是13(我测试环境的当前svn赋予的版本号)。A、B文件的内容如下图(左A右B): 接下来,B用户添加一句话并提交,内容如下: 此时B用户和服务器的test1.txt的版本都变为14,只有A用户的test1.txt的版本还为13。接下来A用户添加一句“aa”,然后提交 由于A用户是在13版本上做的修改,而服务器已经是14版本了,所以会提交失败: 接下来就是我们要解决的问题了,解决方法分为以下两种方式。第一种方式:提交失败后直接选择revert,省去了解决冲突问题;第二种方式:提交失败后选择更新文件,这时会有冲突问题。详细介绍如下。 三、解决方案 1、第一种方式 A放弃自己修改的内容,进行Revert操作,使其test1.txt成为13版本的最初内容。然后update使其test1.txt成为14版本,再在14版本上修改提交。操作如下图: 2、第二种方式 因为版本过时,提交失败后。A用户直接选择更新操作,结果如下图所见 这里详细说一下产生冲突后的这几个文件,: test1.txt.mine—这个文件是A用户在13版本中做了修改要提交的文件。它的内容是:13版本内容+A用户的修改 test1.txt.r13—-这个文件是A用户最初的13版本的test1.txt。它的内容是:13版本内容 test1.txt.r14—-这个文件时svn服务器中test1.txt的最新版本,这里既是B用户提交后的14版本。它的内容是:13版本内容+B用户的修改 test1.txt——–由于A用户选择了直接更新,此文件就是svn将 最新版本14…

Continue Reading →

Posted in: SVN

SVN和Git对比

在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢? SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!这是两者之间最核心的区别。 SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 Git每一个终端都是一个仓库,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应Git提供的一些概念和特征。 ————————————————————————————————— 集中式版本控制系统: 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。 分布式版本控制系统: 首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。 和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。 在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。 当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。 那么Git和SVN两者之间具体有哪些不同?下面详细做下对比: —————————————————————————————————————- 一、搞清楚两种模式:集中式VS分布式 (1)SVN属于集中式的版本控制系统 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 SVN的特点概括起来主要由以下几条: 1)每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据;…

Continue Reading →

Posted in: CVS

SVN中检出(check out)和导出(export)的区别

一、check out跟check in对应,export跟import对应。 二、check out导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关联,比如你可以进行Svn Update或者Svn Commit操作。同时导出文件夹下有一个.svn的隐藏文件夹,存储着一些版本的元数据信息。 三、export 简单导出一个版本的数据,导出的文件脱离SVN版本控制,修改后无进行Update和Commit操作。导出文件夹下没有.svn目录。

Continue Reading →

Posted in: SVN

Git的安装和配置

操作步骤 一、git官网下载git安装包 二、点击git.exe安装程序 三、点击next 四、根据自己的需要可以把需要安装软件全选上,点击next 五、由于这是个人使用所以选择第二项 六、默认选择 七、安装环境变量(一般程序安装完会默认加,否则进行以下操作) 八、验证是否安装成功 下载地址 https://git-scm.com/downloads 引用文章:https://jingyan.baidu.com/article/9f7e7ec0b17cac6f2815548d.html

Continue Reading →

Posted in: Git

SVN执行clean up报错的解决方法

svn执行clean up后出现提示:svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted,svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了。错误如下: 解决方法:清空svn的队列 1.下载sqlite3.exe。 2.找到你项目的.svn文件(隐藏文件夹),查看是否存在wc.db(数据库文件)。 3.将sqlite3.exe放到.svn的同级目录。 4.启动cmd执行sqlite3 .svn/wc.db…

Continue Reading →

Posted in: SVN

Windows下搭建SVN服务器

一、所需资源 VisualSVN Server:http://www.visualsvn.com/server/download/ 二、操作步骤 1、安装界面,各种下一步 2、安装完成后,打开VisualSVN Server Manager 3、Repositories右键创建SVN资源库 4、User下创建用户,在Repositories的Properties可控制全部用户/指定用户使用 5、右键项目Copy URL to Clipboard,可在本地的TortoiseSVN里面进行项目导入

Continue Reading →

Posted in: SVN