Mercurial 合并存储库作为分支

2024-02-19

我有两个 Mercurial 存储库,用于同一项目的不同主要修订。后一个版本是massive更改了项目的功能,尤其是 UI,但它仍然具有许多与早期版本相同的代码。 (为了方便起见,我将这些版本称为4.6 and 5.0和存储库项目-4.x and 项目-5.x向前走;这基本上就是我正在处理的问题。)[1]

当我们更仔细地考虑存储库的结构,并特别考虑如何处理相关代码时,很明显,我们希望简单地将存储库放在一起,并使用命名分支来进行每个存储库中正在进行的工作(人们可以从中分支或书签并根据需要合并)。为此,我们决定基本上需要拉动项目-5.x存储库到项目-4.x存储库。据我所知,组合存储库应该相当简单:

$ hg pull -f project-5.x   # in project-4.x
$ hg merge

到目前为止,一切都很好。我关心的是处理分支问题。[2]这些将作为两个完全不相关的链出现(这很好),但我希望分支结构看起来像这样:

---4.6-----   }
  \           } original project-4.x
   5.0-----   }
       /
-------       } original project-5.x

问题是我不是exactly确定如何去做。

Edit:见下文;我设计的答案有效。


脚注

  1. 如果您想知道为什么现在才出现这个问题……好吧,该项目从开始时才得到版本控制4.6。是的,这有点疯狂。而且我以前从未负责过这样的重大版本更改,所以我最初决定完全创建一个新的存储库,我现在当然后悔了。活到老,学到老。
  2. Answers I've already read on the subject (but which left me unsure how to do this exactly):
    • Mercurial - 合并分支 https://stackoverflow.com/questions/5186976/mercurial-merging-branches
    • 如何将两个 Mercurial 存储库合并为一个存储库 https://stackoverflow.com/questions/10014012/how-do-i-merge-two-mercurial-repos-into-a-single-one
    • 如何将一个 Mercurial 存储库(包括历史记录)作为子目录导入另一个 Mercurial 存储库,而不使用子存储库? https://stackoverflow.com/questions/3214717/how-can-i-import-a-mercurial-repo-including-history-into-another-mercurial-rep

我原本以为我需要某种方法来拉入分支,但在仔细研究之后,我得出结论,执行此操作的最佳方法大致如下:

  1. 创建所需的新分支结构(即创建4.6 and 5.0分支机构)。
  2. 删除旧的default分支进入4.6基础存储库中的分支。
  3. 项目-5.x存储库到项目-4.x存储库。
  4. 合并default(或者在这个存储库的情况下,experimental)基线,在合并过程中被拉入5.0分支,关闭experimental沿途分支。
  5. 限制对旧存储库的中央推/拉位置的写入访问;由于历史原因,我们仍然保留着它,但人们不能无意中推动它。

准备(步骤 1-2)

$ cd <project-4.x directory>
$ hg branch 4.6
$ hg ci -m "New 4.0 baseline"
$ hg branch 5.0
$ hg ci -m "New 5.0 baseline"
$ hg up default
$ hg ci --close-branch -m "Close default branch going forward.
$ hg up 4.6
$ hg merge default
$ hg ci -m "branch merge default -> 4.6"

此时,存储库已设置完毕:它具有新的基线分支并删除了旧的分支default我们想要摆脱的分支。

之后,我进行了更改,以使存储库结构看起来更像 5.0 分支所需的方式项目-4.x存储库(因为大规模重组是版本更改工作的一部分)。

存储库合并(步骤 3-4)

下一步实际上是将存储库合并在一起,并将旧存储库中的内容推送到所需的分支中。

$ hg pull -f <path to project-5.x repository>   # still in project-4.x repository
$ hg merge -m "Merge in project-5.x repository"
$ hg up experimental   # experimental is the name of the "default" branch
$ hg ci --close-branch -m "Close experimental branch"
$ hg up 5.0
$ hg merge experimental
$ hg ci -m "Merge old experimental into new 5.0 baseline"

这一切进展顺利,没有任何合并冲突(除了我需要解决我的一些小差异).hgignore file).

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

Mercurial 合并存储库作为分支 的相关文章

  • 使用 Windows 网络共享目录时 Hg 存储库损坏

    我希望我能在这里得到一些帮助 因为 SO UX 比 Mercurial 邮件列表更好 多年来我一直在家里愉快地使用 Mercurial 我还将它与 Bitbucket Cloud 一起用于一些更严肃 但仍然是爱好 的项目 去年 我将我的团队
  • 如何存储和计算版本控制历史记录?

    考虑这个简单的 python 代码 它演示了一个非常简单的字典版本控制设计 def build current history current for action key value in history assert action in
  • 如何从 Mercurial 中的“主”存储库获取 Google 代码托管项目的更改?

    我从 code google com 上托管的项目创建了一个 服务器 克隆 我从我的机器中的该存储库创建一个克隆并推送一些更改 一切顺利 现在主存储库有一些更改 我想拉取它们 如何使用这些更改更新我的 服务器 克隆 hg pull u go
  • 版本控制存储过程/PLSQL?

    有没有一种有效的方法来对用 PL SQL 编写的存储过程进行版本控制 我只提到 PL SQL 因为可能存在特定的工具 任何针对存储过程版本控制的答案都是理想的 在我目前的工作中 团队现在使用以下方法对PL SQL进行版本控制 编译PL SQ
  • 合并来自并行 Subversion 存储库的更新代码

    我想知道人们在将实时 持续更新的 SVN 存储库与离线存储库 更新频率较低 合并时通常会采取哪些步骤 以我的场景为例 不久前我下载了BugTracker NET系统 当时它的版本是3 2 3 随后我对我们业务的代码进行了一些增强 我们使用
  • VB.net 应用程序保留以前的版本

    我有一个正在发布的 Visual Basic 项目 并且每次都会增加版本号 当我安装新版本时 它会打开 但一旦应用程序重新启动 它似乎就会恢复到以前的版本 我不知道为什么 尝试更新发布应用程序时所需的最低版本 转到应用程序属性 gt 发布
  • 如何克隆存储库并保留文件时间戳?

    如何从新机器上的服务器获取源代码的副本 但保留文件时间戳 通过以下步骤 所有时间戳均设置为当前日期 时间 手动创建存储库的根文件夹 光盘放入其中 执行一个hg init 使用 TortiseHg 将存储库从服务器克隆到文件夹 是否有一个选项
  • PHP 中正确的存储库模式设计?

    前言 我尝试在具有关系数据库的 MVC 架构中使用存储库模式 我最近开始学习 PHP 中的 TDD 并且我意识到我的数据库与应用程序的其余部分耦合得太紧密 我读过有关存储库并使用国际奥委会容器 http laravel com docs 4
  • hg 语法的作用是什么:提交 A 是否可以从提交 B“到达”

    我的存储库的历史非常复杂 我经常发现自己想知道过去的某个提交是否 在 或 可从 某个修订 通常是我的头脑之一 到达 我该怎么做呢 您可以使用转速集语法 http selenic com hg help revsets 假设您想询问修订版 4
  • 如何使用 Mercurial 忘记所有已删除的文件

    我是 Mercurial 的新手 在清理项目中的图像文件夹后 我显示了大量文件 在 汞状态 中 我可以为每个输入 hg忘记 但必须有一个更简单的方法 那么我怎样才能告诉 Mercurial 忘记文件夹中所有已删除的 状态 文件呢 如果您也可
  • 如何在 *Windows* 中将 Mercurial 存储库转换为 Git? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上将 Mercurial hg 存储库转换为 Git 7 https stackoverflow com questions 3267232 converting a mercur
  • CMake:从多行文本文件获取版本

    我有一个文件version txt VERSION MAJOR 1 VERSION MINOR 1 VERSION PATCH 3 我想使用 cmake 添加主要 次要和补丁的定义 我尝试过使用 file STRING version tx
  • 如果在不同的分支上,为什么我不能重新建立源变更集的祖先?

    我想知道为什么以下模式不可能 创建了一个本地功能分支 minor feature 不打算与世界共享 后 我想将其上的工作重新建立到一个众所周知的分支 稳定 的尖端 然而我发现 在稳定版自从分支以来没有取得任何进展的情况下 rebase 找不
  • 变量替换在 Sphinx 中无法正常工作

    我有一个用以下内容制作的文档项目Sphinx http www sphinx doc org en stable 我通过配置键使用全局变量rst epilog My conf py文件包含以下内容 rst epilog MY VERSION
  • OS X Server - 机器人无法从存储库获取源代码

    我安装了以前版本的 OS X Server 并且运行良好 但是当我安装升级到 3 2 1 时 我发现我的机器人都无法正常工作 这些是我在每次尝试集成时遇到的问题 构建服务错误无法将数据放入缓冲区 1 构建服务警告由于找不到工作副本 源代码管
  • 传统 n 层设计中具有多个项目的 Git 存储库的最佳实践

    我正在从集中式 SCM 系统切换到 GIT 好吧 我承认是哪一个 它是 Visual SourceSafe 因此 除了克服 Git 命令和工作流程的学习曲线之外 我目前面临的最大问题是如何将我们当前的存储库迁移到 Git 对于单个存储库或多
  • 如何跳过 Maven 存储库中的发布或特定模块

    Heyho 我有一个具有以下结构的 Maven 项目 parent 项目清单 API模块 module2 module5 test 分配 组装 所以首先我运行父模块 然后运行构建 api 的模块 然后运行依赖于 api 的模块 然后运行一个
  • 执行“挤压和合并”后可能出现问题?

    I used Squash and Merge用于合并dev分支到main因为我不想要来自的一些提交消息dev出现在的分支main但现在我发现main比 dev 提前 1 次提交 并且该图显示 两者之间没有联系dev and main 这是
  • 版本控制中的平分是否受益于使用 rebaseif 工作流程?

    rebaseif Mercurial 扩展会在拉取时自动执行变基过程 前提是合并可以自动完成而不会发生冲突 如果存在需要手动解决的冲突 它不会变基 让您准备好手动合并两个分支 当开发人员在代码的不同部分工作时 这会简化和线性化历史记录 尽管
  • TFS 2010 跨团队项目分支 - 最佳实践

    我在了解如何根据 TFS Ranger 团队提供的最佳实践配置 TFS 时遇到问题 问题是这样的 我的公司有多种产品使用共享的通用代码库 gt Core gt gt Main Source Parent Branch gt gt Produ

随机推荐

  • 从 PHP 获取 Json 数组

    我是 Android 和 JSON 新手 目前正在尝试从数据库中获取我的数据 但它显示错误 这是我的日志猫 I mytag my json string success 1 message Lecturer s Available lect
  • 如何在 Rust 中使用父模块导入?

    如果你有这样的目录结构 src main rs src module1 blah rs src module1 blah2 rs src utils logging rs 如何使用其他文件中的函数 从 Rust 教程来看 听起来我应该能够做
  • 在 Fluent nHibernate 中将平面视图映射到类层次结构

    我正在开发一个应用程序 它有一个使用比赛结果 时间等的模型 我有一个看起来像这样的模型 public class Competitor public virtual int ID get set public virtual string
  • 在 Google Apps 脚本中访问已发送的电子邮件

    我正在使用 Google 脚本发送一封电子邮件并查找对此的任何回复 应该只有一个回复 但这与这里并不真正相关 理论上 我可以使用搜索 标签和ReplyTo 选项中GmailApp sendEmail跟踪事情 然而 我遇到了一些重叠的问题 担
  • Google Javascript 自定义搜索 API:按图像 url 搜索图像

    我尝试按短语搜索图像并且它有效 但我需要按网址搜索图像 我需要找到相同的图像 但尺寸更大 div div
  • 如何在 IE8 中模拟最小宽度

    IE8 文档说它支持 min width 但它似乎对我不起作用 我想要的最小宽度的 html 位于表格单元格中 我在这里看到另一个问题 建议向每个单元格添加一个 1 像素高度的 div 并设置宽度 但这不起作用 出于某种原因 IE 将其渲染
  • UIView 带有圆角和阴影?

    我已经在一个应用程序上工作了几年 并收到了一个简单的设计请求 圆化 UIView 的角并添加阴影 按照下面给出的操作 我想要定制UIView 我只是想要一个带有圆角和浅色阴影的空白白色视图 没有照明效果 我可以一一做 但通常的clipToB
  • pandas 多索引数据帧,缺失值的 ND 插值

    pandas 是否可以在多索引数据帧中插入缺失值 下面的示例没有按预期工作 arr1 np array np arange 1 10 1 arr2 np array np arange 2 20 2 df1 pd DataFrame zip
  • 如何使用 PayPal 以编程方式退款?

    正在开发我的贝宝集成并且进展顺利 我想知道在需要退款的情况下是否有办法以编程方式进行退款 根据我的理解 您应该使用 Refund API
  • 将 SymPy 矩阵转换为 numpy 数组/矩阵的最佳方法是什么

    我不确定我一直在使用的方法是否sympy转换一个MutableDenseMatrix to a numpy array or numpy matrix目前是一个很好的做法 我有一个符号矩阵 例如 g sympy Matrix x 2 x 3
  • SendGrid API 密钥不起作用。 “所提供的授权无效、已过期或已撤销”

    SendGrid 似乎阻止我的 Node js 服务器发送电子邮件 我在发送电子邮件的响应中收到此错误消息 提供的授权无效 已过期或已撤销 我也有一个 API 密钥设置并遵循了文档 Answer recommended by Twilio
  • 去掉cpp生成的注释

    I use include frontend tokens mll in lexer mll 进而cpp C P frontend lexer mll o frontend lexer new mll生成lexer new mll 这一直有
  • 如何查看我的机器上安装的 gem 的源代码?

    我在 Rails 应用程序中安装了 Devise 我想通读源代码并了解它的工作原理 我查看了 Rails 应用程序的整个文件夹结构 但找不到任何代码 方法调用除外 我知道我可以从 Github 存储库中看到源代码 但我希望在我的编辑器和本地
  • 使用框架时在 PHP 中注释代码

    我正在使用以下命令创建一个简单的应用程序Kohana https en wikipedia org wiki Kohana framework PHP 框架 仅供参考 这是我第一次使用该框架 在开发类或函数时 我使用 DocBlock 注释
  • 将三星 S7 连接到 Android Studio

    我喜欢使用 Android Studio 直接在 Samsung S7 上启动我的应用程序 我已经通过在内部版本号上点击 7 次来在开发人员选项中启用调试模式 但在启动应用程序并获取 选择部署目标 对话框时我仍然看不到设备 我还需要做什么
  • Xdebug:[单步调试] 连接调试客户端超时,等待:200 毫秒。尝试过:本地主机:9003

    我的 php ini 配置 XDebug zend extension C xampp php ext php xdebug dll xdebug mode debug xdebug remote autostart on xdebug p
  • 无论我如何尝试都无法加载资源

    我正在尝试加载已添加到项目中的资源 它告诉我 路径中存在非法字符 现在 资源的名称是 ShortcutList txt 我不认为这有任何违法之处 我使用的代码是 public void InitShortcuts try string s
  • PowerShell get-acl 列出文件夹内容与 ReadAndExecute

    这是一个简单的问题 但我在谷歌或这里还找不到答案 通过使用 PowerShell 或 cmd 无第三方工具 如何以允许我区分 列出文件夹内容 和 ReadAndExecute 的方式检索文件夹权限 现在 当我在文件夹上执行 Get Acl
  • 如何在样式中引用主题属性?

    我有以下问题 我想自定义列表中行的外观 但在膨胀过程中抛出异常 style xml 中的一段代码 属性 xml
  • Mercurial 合并存储库作为分支

    我有两个 Mercurial 存储库 用于同一项目的不同主要修订 后一个版本是massive更改了项目的功能 尤其是 UI 但它仍然具有许多与早期版本相同的代码 为了方便起见 我将这些版本称为4 6 and 5 0和存储库项目 4 x an