C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  496 随笔 :: 0 文章 :: 634 评论 :: 571万 阅读

  之前对SVN不熟悉,一碰到冲突就怕得要死,不知道应该怎么处理。今天必须要正视这个问题,研究一下。

一、冲突

  SVN非常智能,它不像VSS那样,一个人在改的时候必须以独占的方式签出文件,导致其他人不能够修改。而是允许多个人同时修改一个文件。这就大大减少了资源竞争的问题,之前用VSS经常要问同事:"改完没,签入一下"。

  1、冲突是如何发生的

  • 两个人修改了不同文件?不会有冲突,因为它们并不相关。
  • 两个人同时修改了同一个文件的不同位置?不会有冲突,SVN很好地解决了这个问题。
  • 两个人同时修改了同一个文件的相同位置?这个时候会产生冲突。

  情景:工程师A修改了a.txt的第一行,提交了。工程师B也修改了a.txt的第一行,然后上传,这时SVN会提示存在冲突。

  我们来重现一次这样的情景。首先,我们创建3个文件夹,一个服务端,两个客户端。SVN关联它们。然后上传1个a.txt上去。

  同时在两个文件夹,打开并修改a.txt文件。

  

  修改完毕后,文件夹提示有文件未上传:

  

  上传client1,没问题,直接变绿。但是当上传client2的时候,SVN提示a.txt文件过期。

  

  这时,重新获取client2文件夹,如果此时SVN发现a.txt文件修改的不是同一行,那么也没问题了,但是很遗憾,这里我们修改的都是两个文件夹的第一行。

  SVN提示冲突,文件夹变成“黄色叹号”。

  

  2、冲突的解决

  我们选择编辑冲突:

  

  此时,在一侧上右键会有如下选择项供我们选择:

  

  1、Use this text block:使用此文本块;
  2、Use this whole file:使用这个文件;
  3、Use text block from 'mine' before 'theirs':合并,将我的改动放在别人的改动之前;
  4、Use text block from 'theids' before 'mine':合并,将别人的改动放在我的改动之前;

  以上4个选项,点击之后就会在最下面的TextArea看到最终效果,选择想要的版本就OK了。

  如果是一个个处理,可以选择跳转到上一个/下一个冲突地方:

  

  完事了,标记为已解决冲突就OK了。

  

二、SVN忽略文件

  在项目中,有些文件可能是不需要SVN管理的,因为有些文件可能每次生成都会改变,例如bin目录。可以考虑将这些目录从SVN管理中忽略掉,就不用每次Comit都更新这些文件。其操作方式如下:

  1、在SVN中忽略某文件:

  

  2、忽略后,如果提交,此时服务器端会删除掉该文件,其图标显示如下:

  

  3、如果又想将已经忽略的文件添加回来:

  

  通常来说,一个.Net的Web项目,如下文件夹是不需要添加到SVN管理的:

  • bin文件夹;
  • obj文件夹;
  • *.user文件;
  • .suo文件;
posted on   逆心  阅读(6653)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2013-11-28 多线程实际运用<第七篇>
2012-11-28 CSS常用属性
点击右上角即可分享
微信分享提示