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 合并存储库作为分支 的相关文章

  • 私人变更的用例

    假设我有以下场景 我克隆了一些开源项目 例如从 URL X 克隆的项目 现在我有了它的本地克隆 我对本地克隆进行了一些更改以尝试并在本地提交它们 现在我想要的是以下内容 我想从开源项目 X 获取更新 只需获取其所有最新代码 无需我进行任何更
  • hg 存档到远程目录

    有没有办法通过 SSH 将 Mercurial 存储库存档到远程目录 例如 如果可以执行以下操作 那就太好了 hg archive ssh email protected cdn cgi l email protection path to
  • 我怎样才能让两个“发展流”(分支?)相互跟踪,同时在特定方面保持不同?

    BRIEF 我想让两个 或更多 开发流 环境相互跟踪 在两个方向上发送彼此之间的更改 而不完全收敛 同时保留某些关键的 本质的差异 细节 一个具体的例子 下面是一个具体的例子 我对我的主目录 glew home 进行版本控制已有 28 年了
  • Archiva 忽略 Security.properties

    似乎 archiva 2 2 完全忽略了安全属性 我正在关注这个文档 https archiva apache org docs 2 2 0 adminguide customising security html我已经在下面设置了 sec
  • Symfony2:如何在FormType中调用实体的存储库

    我尝试调用我的实体的存储库Category以我的实体的类形 式BonCommande 但是出现了这个错误 注意 未定义的属性 C wamp www Symfony test src Application VehiculeBundle Fo
  • 为什么这段 C# 代码不起作用?我正在尝试将 shell 的输出读取到 TortoiseHG (Mercurial)

    我正在尝试让 Mercurial 在我的 C wpf 应用程序的 shell 中运行 我的目的是将输出检索到字符串中 以便我可以解析它 对我来说不幸的是 hg exe 来自 tortoiseHg 似乎不会通过下面的代码返回任何内容 其他 e
  • 当主干/分支/标签结构混乱时,如何从 Subversion 迁移到 Mercurial?

    我想将存储库从 Subversion 转换为 Mercurial 但是当我最初设置存储库时 我以最懒的方式完成了它 随着时间的推移 该结构不断变形和恶化 此时已有 5 年历史 尽管如此 我还是想保留尽可能多的历史 即使我必须弄脏并手动将东西
  • git 项目与存储库,根本区别是什么?

    我有两个项目当前使用 SVN 我正在迁移到 git 我注册了 gitorious 并且可以选择创建新项目或添加存储库 我刚刚开始使用 git 所以我不知道有什么区别 或者更确切地说 如果我只是在一个项目下使用存储库 这意味着什么 如果我这样
  • 存储库和数据映射器模式

    在大量阅读有关存储库和数据映射器的内容后 我决定在测试项目中实现这些模式 由于我对这些不熟悉 我想了解您对我如何在一个简单的项目中实现这些的看法 杰里米 米勒 说 做一些不平凡的个人编码项目 您可以在其中自由地尝试设计模式 但我不知道我做的
  • 为什么通用存储库被视为反模式? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我看来 许多专门的存储库类都具有相似的特征 并且让这些类实现一个概述这些特征的接口 创建一个通用存储库是有意义的 为了说明我的观点 假设我们有
  • 将 CVS 升级到 git/hg 的技巧?

    我们仍然使用 CVS 我使用 git 和 hg 供我个人使用 尽管我对这两个工具仍然是新手 但我意识到它们更现代 更好 更快 分布式等 只是每个人都如此习惯 CVS 以至于我觉得如果我是推荐并实际将我们当前的 CVS 服务器升级 移植 转换
  • Mercurial Eclipse 插件

    在哪里可以找到好的 Eclipse Mercurial 插件 MercurialEclipse https bitbucket org mercurialeclipse main 更新站点 https bitbucket org mercu
  • nuget 规范依赖项,获取最新版本吗?

    In the nuspec 版本控制文档 http docs nuget org docs reference versioning I see 1 0 1 0 x 1 0 x 1 0 1 0 x lt 1 0 1 0 x 1 0 1 0
  • 如何将 git 存储库转换为 Mercurial?

    我一直在使用 git 作为源代码存储库开发 java 应用程序 我想与其他 java 开发人员分享该项目 hg 似乎是他们最常用的 我的问题是如何将 git 存储库转换为 hg 如果我尝试谷歌搜索 将 git 转换为 hg 并且每次搜索命中
  • SBT - 运行任务来设置SettingKey

    所以我的一般问题是我想根据任务的结果设置版本密钥 但是版本密钥是在任务运行之前设置的 据我了解 一旦设置了键的值 我就无法更改它 因此我无法在我的任务中更改它 我想要做的是将任务作为发布任务的依赖项运行并更改版本的值 我觉得一定有办法做到这
  • 存储库和服务层之间的区别

    我查看了一些相关的问题 但仍然没有看到存储库和服务层之间有太大区别 所以给出的例子我想它应该看起来像这样 如果不是请告诉我为什么 public interface ProductRepository extends CrudReposito
  • 如何在gitlab存储库中下载单个文件夹或文件

    我有一个存储库 在此存储库中 有多个文件夹可用 我只需要此存储库中的一个文件夹 我已经尝试遵循命令 但它不起作用 克隆 有没有办法只克隆 git 存储库子目录 https stackoverflow com questions 600079
  • 使用 Maven 配置文件进行工件版本控制

    我希望项目的版本号采用以下格式进行正常发布版本控制
  • 如何在 Mac OS X 10.8 上安装 hg Convert 所需的 python subversion 绑定?

    我正在寻找一种解决方案 最好是干净且简单的 以启用hg convert使用 SVN 存储库在 OS X 10 8 上工作 目前 如果您尝试转换 SVN 存储库 您将得到一个could not load Subversion python b
  • NoSuchBeanDefinitionException:没有合格的 bean 类型

    当调用我的 GET 请求 模式计算 时 我收到此错误 我不明白为什么 我的依赖项注入是正确的 org springframework beans factory NoSuchBeanDefinitionException No qualif

随机推荐

  • 从 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