SVN冲突解决和如何使用VisualSVN Server搭建SVN服务器

今天闲聊的时候,有位程序媛姐姐吐槽了一下小乌龟(TortoiseSVN):感觉小乌龟不好用,我还是习惯用IDE里的svn工具,但是IDE里的svn工具有的时候提交会有问题,唉...

我:不会啊,我觉得小乌龟挺好用的,你还是别用IDE里的svn了,谁知道IDE有没有对svn做什么私人订制(纯意淫)~

程序媛姐姐:可是我一直搞不太清楚小乌龟的冲突应该怎么解决

我秒回:我知道,有空跟你科普一下呗?

程序媛姐姐:好啊,晚上加班的时候吧。

想象一下程序媛姐姐的内心活动:翻了一个360度的白眼,切,姐只是随便找个理由来表示一下自己不喜欢小乌龟而已~看把你能的

拿到了一次装逼的机会,当然要好好对待。到晚上还有时间,不如搭建个svn服务器,上传份代码,实况演示一下。说干就干。

这里使用VisualSVN Server来搭建svn服务器。可以到这里根据需要进行下载。怎么安装就跳过了,这里主要看一下怎么创建仓库。

安装好VisualSVN Server以后,运行起来页面是这样的:


VisualSVN Server主页面

在创建代码仓库之前,需要先创建个用户,右键点击Users->Create User...,在弹出的页面里创建用户,用户名根据你自己的需要来,我这里写的wht:


创建用户

然后点击OK,这个用户就创建好了。你可以通过创建Groups来给用户分组,对每个组的成员进行权限限制。

创建好了用户,就可以创建代码仓库了,右键点击Repositories->Create New Repository...,弹出页面选择仓库类型:


选择仓库类型

两种偏好:一种普通的基于标准FSFS数据存储的仓库,一种基于VDFS的分布式的仓库。具体细节可以点击弹框的左下角链接查看。我这里选择的第一种,点击下一步,给仓库起个名字:


仓库名称

依然下一步,这里选择仓库初始的目录结构,根据需要进行选择,我这里选的空仓库,也是VisualSVN Server推荐的。我们可以通过新建文件夹来自定义仓库目录结构,比较灵活:


仓库初始目录结构

接下来是仓库访问权限,同样根据需要进行选择,我这里选择自定义,然后点击custom...按钮,选择我们创建的用户wht,给他读/写权限:


配置权限

然后点击Create,代码仓库创建成功,你会看到如下界面:


代码仓库创建成功

至此,我们的代码仓库就创建完成了,Repository URL就是代码仓库的地址,将来用svn客户端(小乌龟)checkout代码的时候会用到。

目前TestRepo仓库是空的,你可以通过右键点击仓库名,选择新建Folder来给仓库创建目录结构,我这里为TestRepo创建了trunk(放代码的地方),tags(打标签),branches(代码分支)三个目录。接下来就可以导入工程到svn服务器了,这步操作需要在svn的客户端(小乌龟)上来进行。

找到工程目录,右键点击文件夹>TortoisSVN>Import...,弹出页面:


导入到svn服务器

仓库地址栏填入刚创建的代码仓库的url(可以右键点击仓库名,点击Copy url to Clipboard获取),点击OK完成导入。导入完成后你就可以在代码仓库的trunk目录下看到你导入的工程了。

这里提一下,每次使用svn客户端上传代码的时候最好都填写一下备注信息,这样有利于版本维护,这个地方是可以通过客户端进行必填设置的。

现在svn服务器搭建完成了,坐等程序媛姐姐的召唤。

...

终于等来这一神圣的装逼时刻。我们来看看代码冲突怎么发生以及怎么解决的。

1. 来到程序媛姐姐的座位上,用她的小乌龟客户端checkout一份工程代码到本地,打开工程,找个文件,修改一行代码,保存,注意,不提交。

2. 回到我电脑上,找到同样的文件,定位到同一行代码,做出修改,保存,这里提交到svn服务器。

3. 再次来到程序媛姐姐的电脑上,用小乌龟从svn服务器上更新一下代码到本地,发现小乌龟在抱怨代码冲突了(conflicted)。


代码冲突

看到没,小乌龟抱怨说main.js冲突!因为程序媛姐姐和我对同一个文件的同一个位置进行了修改,小乌龟不知道到底应该用谁的版本,所以报出冲突的警告。

看下工程目录,是这个鬼样子:


冲突后的目录

别慌,这几个文件分别是原始文件(main.js),程序媛姐姐本地修改后的版本(.mine),另外两个一个是程序媛姐姐本地修改前的版本,一个是svn服务器上目前的版本,也就是我修改后的版本。直接打开main.js看得更清楚:


冲突的地方

代码里面已经标出来哪个是目前本地的修改,哪个是svn服务器上的版本(我用的是VSCode,在一些其他编辑器或IDE环境上会同时列出mine,r5,r6三个版本的代码)。这时候只需要根据具体情况来判断到底应该使用哪个版本。如果你需要继续使用你自己的版本,就删掉======和>>>>>>.r6之间的代码;如果你想更新成svn服务器上的代码,就删掉<<<<<<.mine和=======之间的代码。这里,我们保留程序媛姐姐自己的修改,所以删掉了我的修改(也就是svn上的版本)。插一句,在真实场景中,如果你和同事的代码冲突了,不要随意做决定,一定要和当事人沟通好,到底用你修改的版本还是他修改的版本,再做操作。

到这里还差一步,就是告诉小乌龟,我已经解决掉冲突了。右键点击冲突的文件>TortoiseSVN>Resolved...,这样那三个文件就消失了。至此,代码冲突解决完毕。

还有一种情况,冲突的代码是你由于某种原因(比如不小心碰到了键盘,临时作了修改)修改的,是铁定不会上传到svn上的,那就不用像上面那样操作了,直接连同原始文件一起删掉,然后重新update一下就ok了。

一顿操作下来,程序媛姐姐捧场的说:啊,是这样啊。内心活动估计又是一个惊天大白眼:就跟谁不知道似的~

反正我脸皮厚,我就当你不知道,哈!

希望对你有帮助。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 一、SVN1、什么是svnsvn:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放...
    peng_js阅读 3,198评论 0 0
  • iOS 开发 SVN 版本控制器 更多技术交流请加群 iOS技术联盟 27512466 SVN是Subversio...
    Sunny_Fight阅读 8,740评论 7 63
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,591评论 18 139
  • 命令的使用 1、检出 svn cohttp://路径(目录或文件的全路径)[本地目录全路径] --username...
    小李龍彪阅读 4,418评论 0 9
  • SVN SVN使用 基本操作svn checkout:把项目源码下载到本地,只需要做一次svn update:将本...
    彼岸的黑色曼陀罗阅读 1,605评论 0 4