求助求助,SVN的合并问题,合并等于覆盖??

qq_21042359 2020-07-09 12:05:50
就是这样的,代码分支出去了,主干还在开发,我在分支开发,现在想把主干修复了BUG的代码合并过来,但是合并过来发现,直接是把主干的代码完全拷过来了。。。我改过的地方都变成主干的形状了。

举个例子。原本主干只有一句代码:
B;

我分支加了一句话A:
A;
B;

然后主干加了C来修复了某BUG,所以在主干上是这样的:
B;
C;

然后把主干的合并过来,我以为是这样的:
A;
B;
C;

实际上是这样的:
B;
C;


那合并还有存在意义?说下操作,我使用的smartSVN,应该差不多的。
分支update到最新,主干update到最新。然后点击某个需要merge的文件OR文件夹,然后点击Modify->merge from 2 sources
from url填写的是分支,to url填写的是主干。然后点击merge。然后就是上面的情况了。。。
...全文
486 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_21042359 2020-07-15
  • 打赏
  • 举报
回复
反正就是1种合并是合并变化,所以强调的是啥时候分出去。另一种合并是对比不同然后覆盖,不需要管啥时候分支出来。
qq_21042359 2020-07-15
  • 打赏
  • 举报
回复
已经解决了。原来是理解错主干分支的合并了。实际上window上用的svn和smartSVN,都是有2种合并方式。 其中一种就是我刚刚题上说的,他是把源头不一样的代码完全用源头来代替,拷到你的本地,然后你根据分支仓库的代码和你现在本地代码比较,一个一个手动合并,是合并,不是解决冲突,因为并没有冲突产生。这种合并方式适用任何时间节点分支。 第二种合并方式,就是我们希望的,也是常用的合并方式,但是他对什么时候分支出去有要求。比如主干今天分出去了,然后主干决定以后都不改动了,那么分支拼命写呀写,然后把主干合过来,不会有任何变化,不会有任何文件需要合并,因为从分出去那天起,主干一个字都没改过!但如果主干从分出去那天开始,加了一句话修复了一个BUG,分支也想合并过来,那么分支就会分析是否冲突的情况下合并过来,也不会覆盖同一个cpp文件中分支写过的代码。就是分支是AB,主干是BC,结果是ABC。有冲突的话,就会提示冲突,比如主干改的地方也是A,那么就会提示出来。这才是真正的冲突。 总结,说白了,合并本质意义,其实就是从分支的那天起,大家的变化都被记录下来,合并的时候,合并变化,假如某方压根就没变化过,那么就不存在合并价值。除非用第二种合并,对比2个地方,把不同的地方用源头的代码“覆盖”过来,然后再自己和远端仓库一个一个手动改。这个意义强调的是比较。
sdghchj 2020-07-11
  • 打赏
  • 举报
回复
解决冲突,不了解?
倚栏|听风 2020-07-10
  • 打赏
  • 举报
回复
其实就是你以为的那样,合并的时候你没有注意解决冲突吧,或者选择了以主分支代码为准。。。
ztenv 版主 2020-07-09
  • 打赏
  • 举报
回复
你合并的方式不对吧,不应该出现这种情况的,去百度一下吧,你没有说合并的方法,所以不知道你是怎么操作的。如果能转git就转而使用git吧,比svn好用太多了。
使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是免费的 致谢 来自 Ben Collins-Sussman 来自 Brian W. Fitzpatrick 来自 C. Michael Pilato Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 Subversion的组件 1. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 Subversion实践 Subversion版本库URL 工作拷贝 修订版本 工作拷贝怎样跟踪版本库 混合修订版本的工作拷贝 更新和提交是分开的 混合修订版本很常见 混合版本很有用 混合版本有限制 总结 2. 基本使用 求助! 导入数据到你的版本库 svn import 推荐的版本库布局 初始化检出 禁用密码缓存 用其它身份认证 基本的工作周期 更新你的工作拷贝 修改你的工作拷贝 检查你的修改 查看你的修改概况 检查你的本地修改的详情 取消本地修改 解决冲突(合并别人的修改) 手工合并冲突 复制文件到你的工作文件 脚注:使用svn revert 提交你的修改 检验历史 产生历史修改列表 检查历史修改的详情 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 浏览版本库 svn cat svn list 获得旧的版本库快照 有时你只需要清理 总结 3. 高级主题 版本清单 修订版本关键字 版本日期 属性 为什么需要属性? 操作属性 属性和 Subversion 工作流程 自动设置属性 文件移植性 文件内容类型 文件的可执行性 行结束字符串 忽略未版本控制的条目 关键字替换 锁定 创建锁定 发现锁定 解除和偷窃锁定 锁定交流 外部定义 Peg和实施修订版本 网络模型 请求和响应 客户端凭证缓存 4. 分支与合并 什么是分支? 使用分支 创建分支 在分支上工作 分支背后的关键概念 在分支间复制修改 复制特定的修改 合并背后的关键概念 合并的最佳实践 手工跟踪合并 预览合并 合并冲突 关注还是忽视祖先 合并和移动 常见用例 合并分支到另一分支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 使用分支 标签 建立简单标签 建立复杂标签 分支维护 版本库布局 数据的生命周期 供方分支 常规的供方分支管理过程 svn_load_dirs.pl 总结 5. 版本库管理 Subversion 版本库的定义 版本库开发策略 规划你的版本库结构 决定在哪里与如何部署你的版本库 选择数据存储格式 Berkeley DB FSFS 创建和配置你的版本库 创建版本库 实现版本库钩子 Berkeley DB 配置 版本库维护 管理员的工具箱 svnadmin svnlook svndumpfilter svnsync Berkeley DB 工具 修正提交消息 管理磁盘空间 Subversion如何节约磁盘空间 删除终止的事务 删除不使用的Berkeley DB日志文件 Berkeley DB 恢复 版本库数据的移植 过滤版本库历史 版本库复制 版本库备份 总结 6. 服务配置 概述 选择一个服务器配置 svnserve服务器 svnserve使用SSH通道 Apache 的 HTTP 服务器 推荐 svnserve,一个自定义的服务器 调用服务器 svnserve作为守护进程 使用svnserve通过inetd 通过通道使用svnserve svnserve作为Windows服务 内置的认证和授权 创建一个用户文件和认证域 设置访问控制 SSH 隧道 SSH 配置技巧 初始设置 控制调用的命令 httpd,Apache的HTTP服务器 先决条件 基本的 Apache 配置 认证选项 基本HTTP认证 SSL 证书管理 授权选项 整体访问控制 每目录访问控制 禁用基于路径的检查 额外的糖果 版本库浏览 Apache 日志 其它特性 基于路径的授权 支持多种版本库访问方法 7. 定制你的Subversion体验 运行配置区 配置区布局 配置和Windows注册表 配置选项 服务器 配置 本地化 理解地区 Subversion对区域设置的支持 使用外置比较工具 外置 diff 外置 diff3 8. 嵌入Subversion 分层的库设计 版本库层 版本库访问层 客户端层 进入工作拷贝的管理区 条目文件 原始拷贝和属性文件 使用API Apache可移植运行库 URL 和路径需求 使用 C 和 C++ 以外的语言 代码样例 9. Subversion 完全参考 Subversion 命令行客户端:svn svn选项 svn子命令 svnadmin svnadmin选项 svnadmin子命令 svnlook svnlook选项 svnlook子命令 svnsync svnsync选项 svnsync子命令 svnserve svnserve选项 svnversion mod_dav_svn Subversion属性 版本控制的属性 未版本控制的属性 版本库钩子 A. Subversion 快速入门指南 安装 Subversion 快速指南 B. CVS用户的Subversion指南 版本号现在不同了 目录的版本 更多离线操作 区分状态和更新 状态 更新 分支和标签 元数据属性 解决冲突 二进制文件和行结束标记转换 版本化的模块 认证 迁移CVS版本库到Subversion C. WebDAV和自动版本 什么是WebDAV ? 自动版本化 客户端交互性 独立的 WebDAV 应用程序 Microsoft Office,Dreamweaver,Photoshop Cadaver,DAV 浏览器 文件浏览器 WebDAV 扩展 Microsoft Web 文件夹 Nautilus,Konqueror WebDAV文件系统实现 WebDrive,NetDrive Mac OS X Linux davfs2 D. 第三方工具 E. Copyright 索引 插图清单 1. Subversion的架构 1.1. 一个典型的客户/服务器系统 1.2. 需要避免的问题 1.3. 锁定-修改-解锁 方案 1.4. 拷贝-修改-合并 方案 1.5. 拷贝-修改-合并 方案(续) 1.6. 版本库的文件系统 1.7. 版本库 4.1. 分支与开发 4.2. 开始规划版本库 4.3. 版本库与复制 4.4. 一个文件的分支历史 8.1. 二维的文件和目录 8.2. 版本时间—第三维! 表格清单 1.1. 版本库访问URL 5.1. 版本库数据存储对照表 6.1. Subversion服务器选项比较 C.1. 常用WebDAV客户端 范例清单 5.1. txn-info.sh(报告异常事务) 5.2. 镜像版本库的 pre-revprop-change 钩子 5.3. 镜像版本库的 start-commit 钩子 6.1. 匿名访问的配置实例。 6.2. 一个认证访问的配置实例。 6.3. 一个混合认证/匿名访问的配置实例。 6.4. 禁用所有的路径检查 7.1. 注册表条目(.reg)样本文件。 7.2. diffwrap.sh 7.3. diffwrap.bat 7.4. diff3wrap.sh 7.5. diff3wrap.bat 8.1. 使用版本库层 8.2. 使用 Python 处理版本库层 8.3. 一个Python状态爬虫

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧