为啥将树合并到“两棵树同步的最后修订号”?

Posted

技术标签:

【中文标题】为啥将树合并到“两棵树同步的最后修订号”?【英文标题】:Why merge trees to "last revision number at which the two trees were synchronized"?为什么将树合并到“两棵树同步的最后修订号”? 【发布时间】:2018-03-29 03:37:37 【问题描述】:

在 TortoiseSVN documentation about merging 中,“合并两棵不同的树”的说明如下(强调我的):

在 From Revision 字段和 To Revision 字段中,输入两棵树同步的最后一个修订号

这是正确的吗?这对我来说毫无意义。以这个说明性示例为例,我们希望将修订版 105 的“分支”合并回“主干”:

如果在分支后没有向主干提交任何内容(即如果版本 101 不存在),我们将从主干 HEAD(即版本 100)合并到分支 HEAD(版本 105)。说得通。

但是 101 确实存在。文档说我们必须在两棵树同步的最后一个修订号(即修订版 100,这很有意义)从主干合并到分支......两棵树同步的最后一个修订号......这是什么?

102? (不,它与中继不同步) 100? (不,它甚至不在分支上) 不应该是105吗?这似乎是唯一有意义的,但对我来说这与文档相矛盾。

我在这里缺少什么?文档是否正确?误导?错了吗?

【问题讨论】:

如果分支未与主干“修订版 101”同步,则在将整个分支合并到主干时可能会发生冲突或丢失 您能否提出一个合理的论点来删除parallelism-amdahl 上的扩展文本,该论点排除了原始步骤的额外细节,基于 Gene M. AMDAHL 对改进流程调度的观察? >>> ***.com/posts/18374630/revisions 删除事实是否曾经改善过严格的知识构建? @user3666197 嗯,我相信你在评论错误的元帖子......你的公主在another castle。 【参考方案1】:

我不建议使用 svn 进行 git 风格的分支,在我看来你正在尝试这样做,如果你有充分的理由就使用分支(比如有一个生产和开发分支或一些需要很长时间的功能时间来发展,并阻止其他人做他们的工作)。

仅仅是因为 svn 复制粘贴整个文件夹,而不是像 git 那样只保留更改。

我已经烧掉了 4 个 ssd 驱动器,每天在我的项目中合并东西......

您不必依赖 Tortoise SVN 及其文档,Tortoise SVN 只是 svn 的 GUI。

所以基本上在 SVN 中,分支/标签或其他任何东西之间没有区别,它总是以相同的方式运行,所以恕我直言,Tortoise SVN 文档具有误导性,如果您将分支合并到主干中没有区别,或者相反 -反之亦然。

这也取决于你有哪个底层的SVN版本,最好有依赖svn 1.7或更高版本的版本。

因此,如果您想“重新集成分支”,只需从命令行导航到您的主干或任何调用的目录并输入

 svn merge ^/branch/branch_name

然后删除分支...

Tortoise SVN 也可以让你在控制台中拥有 svn,只需重新启动它的安装,并启用 svn 命令行功能。

【讨论】:

【参考方案2】:

我不明白你为什么要合并不同的树选项。根据图片,您应该使用自动重新整合合并。见TortoiseSVN Manual | Merging a Range of Revisions。

在 HEAD 使用您的主干的工作副本并选择选项合并一系列修订,然后单击 Next-Next-Merge。从分支到主干的合并应该会自动完成。

【讨论】:

以上是关于为啥将树合并到“两棵树同步的最后修订号”?的主要内容,如果未能解决你的问题,请参考以下文章

将多线程合并到 C++ 中如何提高性能,为啥?

为啥在没有明确合并的情况下,更改可能会从一个 NSManagedObjectContext 填充到另一个?

合并两个或多个表,当您不知道要合并的表数时

为啥带有“额外”列的数据透视不能合并结果

为啥不在 Stream API 中使用 reduce 来合并多个映射?

为啥 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中)