在 SVN 子目录上提交和合并被认为是有害的?

2023-11-24

我们的主 SVN 项目根目录中有几个大型子项目。
在使用我们的发布分支时,我只提交和合并我的子项目,主要是因为它更快。

不过,有同事指出,参考合并子目录使用 Subversion 进行版本控制(又名“SVN 书”):

  • 对于长期发布分支(如中所述“常见分支模式”部分),仅对分支的根目录执行合并,而不对子目录执行合并。

不幸的是,这就是警告的范围。链接部分也没有给出解释。

提交和合并 SVN 子目录对发布分支有害吗?
短暂的功能分支又如何呢?


一种可能的解释是您可能会忘记更改集的某些部分。

如果您要合并的更改集覆盖了您已签出的子目录之外的文件,那么您总是有可能忘记合并这些文件。

例如,如果您在主干上有这样的提交:

r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
   M /trunk/subdir1/main.c
   M /trunk/subdir2/main.c

Change some stuff

然后您可以从“稳定”分支中签出 subdir1,然后您可以像这样合并更改集 r5:

$ svn co http://example.com/svn/branches/stable/subdir1
$ cd subdir1
$ svn merge -c 5 http://example.com/svn/trunk/subdir1 .
--- Merging r5 into '.':
U    main.c
$ svn ci -m"Merged r5 from trunk"

但这只会合并修订版 5 的一半。更糟糕的是,如果您返回并查看日志,它现在将显示以下内容:

$ svn log -g http://example.com/svn/
...
------------------------------------------------------------------------
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
   M /trunk/subdir1/main.c
   M /trunk/subdir2/main.c
Merged via: r6

Change some stuff

因此,看起来您已经合并了整个提交,而实际上您只合并了其中的一部分。当然,r6 确实显示稳定分支上只有 1 个文件发生了变化。

------------------------------------------------------------------------
r6 | rich | 2009-04-16 22:28:16 +0200 (Thu, 16 Apr 2009) | 1 line
Changed paths:
   M /branches/stable/subdir2
   M /branches/stable/subdir2/main.c

Merge revision 5 from trunk

有人必须记住或注意到,只有部分变更集被合并,其余部分需要执行。不使用子目录合并可以避免此问题。

有时您确实不想合并所有先前的提交,而上述场景正是您想要做的。在这种情况下,最好添加一条描述您意图的良好提交消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SVN 子目录上提交和合并被认为是有害的? 的相关文章

  • TortoiseSVN svnadmin

    目前我正在设置 TortoiseSVN 并阅读文档等 手册中经常提到svnadmin 我发现我必须下载它分别地 http groups google com group tortoisesvn browse thread thread e2
  • 如何修复损坏的本地 Subversion 工作副本?

    我通常使用 git 对 Subversion 的基础知识知之甚少 所以请保持温柔 我在 Windows 7 上使用 TortoiseSVN SVN 客户端最近宣布需要升级 所以我就这么做了 所有文件都丢失了源代码管理图标 并且资源管理器中出
  • 在 PHP 页面中嵌入 svn 修订号的简单方法?

    注意到这个页面的右下角有 SVN 修订 ID 了吗 我假设这是动态的 我很乐意将其添加到我的一些网站中 就像源代码中的注释一样 以确保代码推送顺利进行 注意 您还可以假设相关站点的工作目录是相关存储库的 svn checkout Edit
  • Windows XP 上无法打开存储库错误

    我正在尝试提交到我的本地 SVN 它一直工作得很好 但今天它给出了这个错误 Unable to open repository file C wamp www svns myproject dir subdir 可能是什么问题呢 编辑 完整
  • 使用 svn_access_file 中的 LDAP 组设置 Subversion 存储库

    如果我从头开始这样做 我会创建这两个单独的存储库 不幸的是 我不得不凑合着用现有的东西 我们的存储库如下所示 trunk tags branches secret trunk secret tags secret branches 我的 S
  • intellij idea 和 eclipse 可以一起使用吗

    对于某些人来说 这可能看起来有点奇怪 但我仍然想知道这是否可能 到目前为止 我们有很多项目是在 eclipse 上编写的 我们中的一些人想进入 intellij idea 的世界 我们可以同时通过 eclipse 和 intellij 一起
  • 将Redmine问题与SVN修订版联系起来的最佳方法

    我们使用 Redmine 进行问题和错误跟踪 我们添加了 SVN 集成 但通过这样做 它仅显示活动中的 SVN 修订 如果能看到由错误或问题引起的所有 SVN 更改 那就太好了 但这似乎不可能 有没有办法做到这一点 如果不是Redmine
  • 使用 Git“正确”合并代码

    我刚刚通过合并 FETCH HEAD 并获取我最近的更改而不是他的更改来覆盖我同事的代码 我想恢复到合并之前 然后进行合并 强制在他接触文件的地方接受他的更改 但在没有任何其他更改的地方进行合并 我的 git 日志 使用 l2 创建 现在看
  • 是否可以从命令行调用 Mathematica 的 diff 功能?

    乌龟SVN http tortoisesvn net 也其他乌龟客户 http tortoisehg bitbucket io about html 包括一个script http osdn net projects tortoisesvn
  • git Branch -m 对其他开发人员有副作用吗?

    We ve 已经学会了如何切换哪个分支指向哪个分支 https stackoverflow com questions 21848 switch branch names in git using git branch m 如果我这样做 是
  • 联合超过 2 个 pandas 数据框

    我正在尝试将 sql 查询转换为 python sql语句如下 select from table 1 union select from table 2 union select from table 3 union select fro
  • tmatesoft.svn.core.SVNAuthenticationException:svn:E170001

    我们正在一个遗留项目 maven 中工作来设置devop 詹金斯首发 Jenkins 构建现在没有问题 但是 在将 sonarqube 与 jenkins 集成时 我们收到以下错误 ERROR Error during SonarQube
  • git-svn SVN 作者文件的相对路径?

    我已经使用 git svn 从工作中克隆了一个 SVN 存储库 在最初的克隆过程中 我提供了一个 SVN 作者文件 当我进行初始克隆时 git 设置了authorsfile作为绝对路径 但是 我在工作机器和笔记本电脑上保留了这个 git 存
  • 您对版本控制进行到什么程度了? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 XSLT 根据属性值合并 2 个 XML 文件?

    文件1 xml
  • 使用 Subversion 进行部分提交

    鉴于我做的案例两个独立的变化 in one文件 例如 添加了一个新方法并更改了另一个方法 我经常不想提交这两项更改 因为one提交 但作为two独立承诺 在 git 存储库上我会使用互动模式 of git 添加 1 http linux d
  • SVN 提交前撤消删除

    如果您从 SVN 工作副本中删除了一个目录 但尚未提交 则如何将其恢复并不明显 当您输入 svn undo d 时 Google 甚至建议将 svn undo delete before commit 作为常见查询 但搜索结果没有任何帮助
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何在 Tortoise 签入中排除文件夹

    我在设置中看到您可以指定模式以从签入中排除文件 但是如何添加包含文件夹 bin 和 obj 呢 我使用设置 全局忽略模式 这是我添加到默认列表中的内容 suo user bin obj Debug Release UpgradeReport
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da

随机推荐

  • d3.js 使用多列从 csv 文件中过滤

    我想使用 csv 中的多个列值进行过滤 我首先想按城市过滤 然后按关键性列过滤 我想过滤重要性 高 中 低 如何使用 AND OR 进行过滤 City 和 Criticality 是复选框 根据我想要过滤相应 csv 列中的数据的选择 寻找
  • 如何在 32 位平台上调用 GetWindowLongPtr 和 SetWindowLongPtr?

    我想 P 调用获取窗口长指针 and 设置窗口长指针 并且我看到有关它们的相互矛盾的信息 有消息称 在 32 位平台上 GetWindowLongPtr 只是一个调用 GetWindowLong 的预处理器宏 并且 GetWindowLon
  • Java:如何设置 htmlunit

    我对 Java 是个菜鸟 但我想尝试一下 htmlunit 我使用 netbeans 作为 IDE 并创建了一个项目文件夹 hu1 以下是该文件夹的结构 hu1 gt nbproject gt src gt hu1 gt test 现在 我
  • 带有共享 ID 的 JPA @OneToOne —— 我可以做得更好吗?

    我正在使用一个我不想更改的现有架构 该架构在表 Person 和 VitalStats 之间具有一对一的关系 其中 Person 有一个主键 VitalStats 使用相同的字段作为 Person 的主键和外键 这意味着它的值是相应 PK
  • 如何处理 FirebaseAuthUserCollisionException

    我开始得到FirebaseAuthUserCollisionException当我尝试登录时出现异常Facebook in my Android应用 com google firebase auth FirebaseAuthUserColl
  • 如何将形状文件导入MySQL

    我需要将 shape 文件中的空间数据导入 MySQL 表中 我能够导入到 PostGreSQL 中 MySQL 的任何指针 我需要MySQL表中的数据 安装 FWtool 后尝试此操作 ogr2ogr f MySQL MySQL data
  • 为什么存在这些替代运算符表示

    考虑这些替代运算符表示 取自here Primary Alternative and and eq bitand bitor compl not not eq or or eq xor xor eq 为什么存在这些替代运算符表示 我喜欢它们
  • dplyr:在 mutate 命令中使用过滤器、group_by [重复]

    这个问题在这里已经有答案了 我想在数据表中添加一列 其中包含 y 的每个值除以 x 1 或 2 中相应条件的平均值 其中 x2 1 对于以下数据 其中 x 1 y 应除以 1 4其中 x 2 y 应除以 1 dt1 lt data tabl
  • Python:Rabin-Karp 算法哈希

    我为了好玩而实现 Rabin Karp 算法 我遇到了这个伪代码 RABIN KARP MATCHER T P d q 1 n T length 2 m P length 3 h d m 1 mod q 4 p 0 5 t 0 6 for
  • 测试rxjs的正确方法

    我把书带来了 rxjs 在行动 并完成测试部分 测试 rxjs 代码与通常的测试不同 因为一切都是延迟加载 在书中 他们提到了两种测试方法 要么传递完成 我正在使用 QUnit 完成信号异步代码已完成 要么传递大理石图 我的问题是 我应该选
  • 在 PHP Web 应用程序中使用时区

    我已经花了几个小时寻找在 PHP MySQL Web 应用程序中使用时区的最佳方法 但很难找到明确的答案 根据我到目前为止所学到的 最好将每个人的资料存储在 UTC 的数据库中 如果我错了 请纠正我 当用户注册时 我会询问他们所在的时区 然
  • 如何使用变量名称引用工作表上的控件对象?

    我已将列表框添加到工作表 而不是 用户表单 我用鼠标做到了这一点 我单击了小锤子和扳手图标 使用如下代码似乎可以轻松引用此列表框 ListBox1 Clear or ListBox1 AddItem An option 但是 我有三个这样的
  • 将活动标题椭圆设置为中间?

    我有一个活动 其标题不断变化 但有时它很长 最后会出现省略号 我可以将椭圆设置为中间吗 你可以这样做 final int actionBarTitle Resources getSystem getIdentifier action bar
  • 将字节数组输出转换为 Blob 会损坏文件

    我正在使用 Office Javascript API 来使用 Angular 编写 Word 插件 我想通过 API 检索 Word 文档 然后将其转换为文件并通过 POST 上传到服务器 我使用的代码与 Microsoft 为此用例提供
  • 如何向 Linq 结果添加索引字段

    假设我有一个像这样的数组 string Filelist 我想创建一个 Linq 结果 其中每个条目都有其在数组中的位置 如下所示 var list from f in Filelist select new Index something
  • Javascript 反向引用后跟数字

    如果我有一个包含 13 个捕获组的正则表达式 我将如何指定包含第一个反向引用后跟文字 3 的替换字符串 var regex one 2 3 4 5 6 7 8 9 10 11 12 13 one2345678910111213 replac
  • 如何分解
    标签上的字符串

    我有一个像下面这样的字符串 Overall Queen Poster br Queen Poster Headboard br Queen Poster br Queen Footboard br Queen Poster Rails 62
  • 确定单列中的最后一行

    我有一张包含列数据的工作表A通过H 我需要确定列中的最后一行A包含数据 都是连续的 数据 行中没有间隙 其他列中也有数据more数据行数多于列数A 所以我只需要隔离列A 和 或只是 col 内的一个范围A 我可以使用电子表格级别执行此操作
  • 显示使用 imagecreatefromstring 创建的图像

    假设我的代码如下所示 我该用什么替换 这里放什么 这样我的图像数据就会显示 谢谢 我该用什么替换 这里放什么 这样我的图像数据就会显示 The location you highlighted is the so called src at
  • 在 SVN 子目录上提交和合并被认为是有害的?

    我们的主 SVN 项目根目录中有几个大型子项目 在使用我们的发布分支时 我只提交和合并我的子项目 主要是因为它更快 不过 有同事指出 参考合并子目录使用 Subversion 进行版本控制 又名 SVN 书 对于长期发布分支 如中所述 常见