在 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 子目录上提交和合并被认为是有害的? 的相关文章

  • 重新创建 svn 存储库

    在一次重大服务器故障之后 svn 存储库被破坏 我的工作版本是最新版本 从我的工作版本重新创建 svn 存储库的方法是什么 在新服务器上安装 svn 并尝试我的工作副本之后 svn switch NEW SVN PATH 我收到一个错误 R
  • 如何有效地合并两个 BST?

    如何合并两个二叉搜索树并保持BST的性质 如果我们决定从树中取出每个元素并将其插入到另一个元素中 则此方法的复杂度将为O n1 log n2 where n1是树的节点数 比如T1 我们已经拆分了 并且n2是另一棵树的节点数 比如T2 执行
  • 撤消 git merge(尚未推送)

    我只是将一些更改提交到我的功能分支之一 feedback tab 然后签出 master 并将它们合并到那里 我实际上打算将它们合并到我的 开发 分支中 现在 master 领先于 origin master 其远程 17 个提交 我还没有
  • 在重复键上仅更新 Null 或空值

    我有一个 mysql 查询来合并主键 IMO 上的两个表 查询工作正常 但我遇到的问题是在重复键更新时 我只想更新 wp second 表的那些没有值的字段 简而言之 在重复键上 wp second 值仅应在 null 或空时更新 这是我到
  • TortoiseGit 与 TortoiseSVN 并存?

    我已经使用 TortoiseSVN 好几年了 但我正在考虑慢慢改用 git 因为我真的很喜欢它的分支和合并 我目前正在通过命令行使用 git 但正在考虑安装 TortoiseGit 有人有并排使用两只乌龟的经验吗 这有什么已知的问题吗 我真
  • 在家庭和办公室进行开发,GIT 会比使用 xcopy 的 SVN 更容易吗?

    如果出于安全原因 源代码只能存储在我的家庭计算机和办公室计算机上 如果传输代码的唯一方法是 USB 密钥 那么哪种源代码控制是最好的 SVN还是GIT 注意 两台计算机之间没有网络连接 我推荐git 无论哪种方式 您都需要 USB 密钥上的
  • 如何在 svn 存储库中本地忽略 .git 和 .gitignore?

    我有一个 SVN 工作副本 由 TortoiseSVN 管理 在该工作副本中 我使用 git 进行本地版本控制和分支 当然 我想隐藏svn的 git目录和 gitignore文件 但是 忽略它们意味着将属性添加到不再是本地的存储库中 我不希
  • 无法加载文件或程序集“SharpSvn”或其依赖项之一。尝试加载格式不正确的程序

    我刚刚在这里下载了 64 位版本的 SharpSVNthe link http sharpsvn open collab net files documents 180 5570 SSvn 1 7002 1998 x64 zip 当我运行我
  • 在使用 Ant/Jenkins 时,如何查看同一 Java 项目的不同 Subversion 标签/分支?

    这是我的开发配置 颠覆之下 我有我的project X trunk 带有我最新的开发人员 我有我的project X tags 具有不同的版本 我正在考虑添加一个分支文件夹 我正在使用 Jenkins 使用 Ant 脚本构建我的projec
  • 为什么每次合并分支后我的 git log graph 都会多增长一行?

    我习惯使用git log oneline graph decorate all作为别名git ll在终端中查看提交图表 但是当我每次合并我的时 一个问题让我感到困惑develop to master 上面命令的输出可能是这样的 0d1bf7
  • TortoiseSVN 不允许我添加任何文件

    我正在尝试使用 TortoiseSVN 1 8 1 将文件添加到 SVN 存储库 我右键单击这些文件并选择 TortoiseSVN gt Add 然后 我选择弹出窗口中的所有文件 然后单击 确定 单击 确定 后 会弹出另一个对话框 所有文件
  • 如何“修复”SVN 分支/树冲突?

    我接手了一个软件项目 决定把所有东西都放在SVN下 上Assembla http www assembla com 使用 Tortoise SVN 树干在ROOT下 所以主干包含了整个应用程序 我标记为 1 0 对于我的第一个重要功能 我创
  • 在python中调用subprocess.Popen时“系统找不到指定的文件”

    我正在尝试使用svnmerge py合并一些文件 它在底层使用 python 当我使用它时 我收到一个错误 系统找不到指定的文件 工作中的同事正在运行相同版本的svnmerge py 以及 python 2 5 2 特别是 r252 609
  • svn diff 如何仅显示更改的行

    当我使用 svn diff en lua 时 我得到以下结果 num Amount all All class Quality own Have own Have2 paper Specs piece Shard not enough no
  • JPA更新一对多关系列表

    我有一个 Question 实体 其中包含另一个名为 Alternatives 的实体的列表 如下所示 public class Question OneToMany fetch FetchType LAZY mappedBy questi
  • 合并具有一个共同元素的集合 R

    我有一个这样的列表 lista list lista 1 c 1 2 4 6 8 9 10 11 12 19 32 34 35 36 37 38 lista 2 c 7 8 lista 3 c 13 14 16 26 27 28 29 30
  • 如何在 Mac OS X 10.8 上安装 hg Convert 所需的 python subversion 绑定?

    我正在寻找一种解决方案 最好是干净且简单的 以启用hg convert使用 SVN 存储库在 OS X 10 8 上工作 目前 如果您尝试转换 SVN 存储库 您将得到一个could not load Subversion python b
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • 根据不平凡的标准有效合并两个数据帧

    正在接听这个问题 https stackoverflow com questions 18821862 data selection error 18823432 18823432昨晚 我花了一个小时试图找到一个没有增长的解决方案data
  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什

随机推荐

  • 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 书 对于长期发布分支 如中所述 常见